2016-08-13 3 views
0

Ich habe Checkboxen in JSP, jetzt möchte ich nur den Wert von einigen Kontrollkästchen haben überprüft haben.erhalten Wert von checboxes von Aktion

<% 
    for(DictItem dictItemDomain : dictItemDomains) { 
    %> 
    <aui:input 
     name="businessDomains" 
     id='<%= "businessDomain" + dictItemDomain.getDictItemId()%>' 
     value="<%=dictItemDomain.getItemCode() %>" 
     type="checkbox" 
     label="<%=dictItemDomain.getItemName(locale, true)%>"/> 
    <% 
    } 
    %> 

Controller:

String[] domains = 
     ParamUtil.getParameterValues(
      actionRequest, "businessDomains"); 

aber Domänen enthalten Wert geprüft und ungeprüft zusammen

Antwort

0
<aui:input name="listBussinessDomains" type="hidden" value="" /> 
<% 
for(DictItem dictItemDomain : dictItemDomains) { 
%> 
    <aui:input 
     name="businessDomains" 
     id='<%= "businessDomain" + dictItemDomain.getDictItemId()%>' 
     value="<%=dictItemDomain.getItemCode() %>" 
     type="checkbox" 
     label="<%=dictItemDomain.getItemName(locale, true)%>" 
     cssClass="getval" 
    /> 
<% 
} 
%> 

Ich versuche versteckten Eingang hinzufügen und jquery mit einem Array Wert zu machen, dann ich es für value attr der versteckten Eingabe, schließlich in Action Controller abrufen.

<script> 
AUI().ready(function(A) { 
    var businessTypeCbs = $(".getval"); 
    var businessTypeCbsChecked = $(".getval:checked"); 
    var checkedArr = []; 
    var listBussinessDomains = A.one("#<portlet:namespace />listBussinessDomains"); 

    businessTypeCbsChecked.each(function() { 
     checkedArr.push($(this).attr("value")); 
     listBussinessDomains.val(checkedArr); 
    }); 

    businessTypeCbs.click(function() { 
     if($(this).is(":checked")) { 
      //alert($(this).attr("value") + ' ' + $(this).attr("id")); 
      if($.inArray($(this).attr("value"), checkedArr) == -1) { 
       checkedArr.push($(this).attr("value")); 
      } 
     } else { 
      if($.inArray($(this).attr("value"), checkedArr) > -1) { 
       removeItem = $(this).attr("value"); 
       checkedArr = $.grep(checkedArr, function(value) { 
         return value != removeItem; 
       }); 
      } 
     } 

     listBussinessDomains.val(checkedArr); 
    }); 


}); 

in Controller

String [] listBussinessDomains = ParamUtil 
     .getParameterValues(actionRequest, "listBussinessDomains"); 

hat funktioniert!