Forums

Home » Liferay Portal » English » 3. Development

Combination View Flat View Tree View
Threads [ Previous | Next ]
Ranen Das
Multiple Dynamic drop down list
January 15, 2013 12:34 PM
Answer

Ranen Das

Rank: Regular Member

Posts: 137

Join Date: April 6, 2011

Recent Posts

Here is a code snippet for Multiple dynamic drop down list- main funda is to use, Liferay Json object and Json array with ResourceRequest/ResourceResponse.

In these code - once user select a country, user will get dyunamic data in state, channel(orgz) and another one drop down called Distributor list, its plain simple java code with Jquery. Thanks


  1
  2Step 1 :-
  3<td>
  4    <select name="state" id="selectStates">
  5    <%
  6    List<Region> stateList = (List)request.getAttribute("stateList");
  7        if(stateList!=null){
  8            for(Region stateTemp:stateList){
  9    %>
 10    <c:choose>
 11            <c:when test="<%= savedState!=null && savedState.getRegionId()==  stateTemp.getRegionId()%>">
 12                <option id="stateName" value="<%= String.valueOf(savedState.getRegionId())%>" selected="selected"><%=savedState.getName()%></option>   
 13            </c:when>
 14          
 15            <c:otherwise>
 16                <option id="stateName" value="<%= String.valueOf(stateTemp.getRegionId())%>"><%=stateTemp.getName()%></option>   
 17            </c:otherwise>
 18        </c:choose>            
 19    <%}} %>
 20    </select>
 21</td>
 22
 23
 24
 25<select id="selectCountry" name="country">
 26<option value=""></option>
 27    <%   
 28        List<Country> activeCountryList = (List)request.getAttribute("activeCountryList");
 29        long selectedCountryId = 0;
 30        if(addressToDisplay != null)
 31            selectedCountryId = addressToDisplay.getCountry().getCountryId();
 32        if(activeCountryList!=null){
 33              for(Country activeCountry : activeCountryList){   
 34                     
 35    %>
 36    <c:choose>
 37        <c:when test="<%= activeCountry.getCountryId() ==  selectedCountryId%>">
 38            <option id="countryName" value="<%= String.valueOf(activeCountry.getCountryId())%>" selected="selected"><%=activeCountry.getName()%></option>   
 39        </c:when>
 40        <c:otherwise>
 41            <option id="countryName" value="<%= String.valueOf(activeCountry.getCountryId())%>"><%=activeCountry.getName()%></option>   
 42        </c:otherwise>
 43    </c:choose>               
 44<%    }
 45}%>
 46
 47</select>
 48
 49<td>
 50    <select name="selectChannel" id="selectChannels">
 51    <%   
 52        List<Organization>  channelList = (List)request.getAttribute("channelList");
 53        if(channelList != null){
 54        String companyChannel = (String)request.getAttribute("channel");
 55        for(Organization selectChannel : channelList){                                  
 56    %>
 57            <c:choose>
 58                <c:when test="<%= companyChannel != null && selectChannel.getName().equals(companyChannel) %>">
 59                    <option id="selectChannel" value="<%= String.valueOf(selectChannel.getOrganizationId()) %>" selected="selected"><%= OnePRMOrganizationServiceUtil.getProgramDisplayName(selectChannel) %></option>   
 60                </c:when>
 61                <c:otherwise>
 62                    <option id="selectChannel" value="<%= String.valueOf(selectChannel.getOrganizationId()) %>" ><%= OnePRMOrganizationServiceUtil.getProgramDisplayName(selectChannel) %></option>   
 63                </c:otherwise>
 64            </c:choose>               
 65        <%    }}%>
 66    </select>
 67</td>
 68
 69
 70<td>
 71    <select label="" name="distributors" id="selectDistributors" multiple="multiple" length="5">
 72     <%
 73     List<Distributor> distributorList = (List)request.getAttribute("distributorList");
 74     List<Distributor> existingDistributorList = (List)request.getAttribute("existingDistributorList");
 75        if(distributorList!=null){
 76            for(Distributor distributor : distributorList){ 
 77            String distributorId = String.valueOf(distributor.getDistributorId());
 78    %>
 79    <c:choose>
 80         <c:when test="<%= existingDistributorList != null && existingDistributorList.contains(distributor)%>">
 81            <option value="<%=distributorId%>" selected="true"><%= distributor.getName()%> </option>         
 82         </c:when>
 83         <c:otherwise>
 84            <option value="<%=distributorId%>"><%= distributor.getName()%> </option>         
 85         </c:otherwise>
 86     </c:choose>
 87    <%}}%>
 88    </select>
 89</td>
 90
 91Step 2:-
 92
 93jQuery("#selectCountry").change(function() {   
 94jQuery('#selectStates').empty();
 95jQuery('#selectChannels').empty();
 96jQuery('#selectDistributors').empty();               
 97var country = jQuery("#selectCountry").val();
 98    var url = '<portlet:resourceURL id="getChannelAndStateList"></portlet:resourceURL>';
 99    jQuery.post(url,{countryName : country},function(data) {
100        for(i=0;i<data.jsonStatesList.length;i++){
101            jsonStatesList = data.jsonStatesList[i].split(":");
102            jQuery("#selectStates").append("<option value='"+ jsonStatesList[0] +"'>"+jsonStatesList[1]+"</option>");
103        }
104       
105       for(i=0;i<data.jsonChannelsList.length;i++){
106        jsonChannelsList = data.jsonChannelsList[i].split(":");
107        jQuery("#selectChannels").append("<option value=''>"+"</option>"+"<option value='"+ jsonChannelsList[0] +"'>"+jsonChannelsList[1]+"</option>");
108       }
109        for(i=0;i<data.jsonDistributorsList.length;i++){
110        jsonDistributorsList = data.jsonDistributorsList[i].split(":");
111        jQuery("#selectDistributors").append("<option value='"+ jsonDistributorsList[0] +"'>"+jsonDistributorsList[1]+"</option>");
112       }                                                
113    });                        
114});
115
116Step 3:-
117
118@Override
119    public void serveResource(ResourceRequest request, ResourceResponse response)
120            throws PortletException, IOException {
121        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);       
122        String jsp = null;
123        response.setContentType("text/html");
124        String resourceId = request.getResourceID();
125
126        if(Validator.isNotNull(resourceId) && resourceId.length() != 0 && resourceId.equalsIgnoreCase("getChannelAndStateList")) {
127            String countryId = request.getParameter("countryName");
128            List<Region> stateList = null;
129            List<Organization> channelList = null;   
130            List<Distributor> distributorList = null;
131            JSONObject jsonFeed = JSONFactoryUtil.createJSONObject();       
132            
133            if(countryId!=null && countryId.isEmpty() !=true){
134                stateList = getRegions(countryId);
135                distributorList = getDistributorByCountryAndActive(Long.valueOf(countryId));
136                try {
137                    channelList = getChannelsForCountry(themeDisplay, countryId);
138                } catch (Exception e) {
139                    e.printStackTrace();
140                    log.error("There is some error in getChannelsForCountry  = "+ e);
141                }
142            }   
143            JSONArray jsonStatesList = JSONFactoryUtil.getJSONFactory().createJSONArray();
144            JSONArray jsonDistributorsList = JSONFactoryUtil.getJSONFactory().createJSONArray();
145            JSONArray jsonChannelsList = JSONFactoryUtil.getJSONFactory().createJSONArray();            
146            if(stateList!=null){
147                for(Region region:stateList){
148                    if(jsonStatesList!=null)
149                        jsonStatesList.put(region.getRegionId()+ ":"+ region.getName());
150                }
151            }            
152            if(distributorList!=null){
153                for(Distributor distributor:distributorList){
154                    if(jsonDistributorsList!=null)
155                        jsonDistributorsList.put(distributor.getDistributorId()+ ":"+ distributor.getName());
156                }
157            }            
158            if(channelList!=null){
159                for(Organization channel:channelList){
160                    if(jsonChannelsList!=null)
161                        //jsonChannelsList.put(channel.getOrganizationId()+ ":"+ channel.getName());
162                        jsonChannelsList.put(channel.getOrganizationId()+ ":"+ OnePRMOrganizationServiceUtil.getProgramDisplayName
163                                            (channel));
164                }
165            }
166            jsonFeed.put("jsonStatesList", jsonStatesList);
167            jsonFeed.put("jsonDistributorsList", jsonDistributorsList);
168            jsonFeed.put("jsonChannelsList", jsonChannelsList);
169            response.setContentType("application/json");
170            response.setCharacterEncoding("UTF-8");
171            response.getWriter().write(jsonFeed.toString());
172        }