sélectionnez la case Tout en JSF sans l'aide de Javascript

Je suis en train de sélectionner/désélectionner toutes les cases de la table de données à l'aide d'une seule case. Comme je suis en train de mettre sur le serveur, je suis incapable de le faire. J'ai regardé autour de solutions, mais ne pouvait pas obtenir de la manière de l'accomplir sur le côté serveur.

Voici le code.

fichier xhtml###

<rich:column styleClass="center-aligned-text">
         <f:facet name="header">
          <h:selectBooleanCheckbox id="selectAll" title="selectAll" valueChangeListener="#{workspace.selectAllComponents}">
           <a4j:support event="onclick" reRender="listcomponents"/>
          </h:selectBooleanCheckbox>
         </f:facet>

         <h:selectBooleanCheckbox id="selectComponent" 
          value="#{workspace.selectedComponentIds[componentInfo.id]}">
         </h:selectBooleanCheckbox>
        </rich:column>

Fichier Java

//Select All and delete
 public void selectAllComponents(ValueChangeEvent event){

  //If the check all button is checked, set all the checkboxes as selected 
  if(!selectAll)
  {
   changeMap(selectedComponentIds,true);
   setSelectAll(true);
  }
  else //If the button is unchecked, unselect all the checkboxes
  { 
   changeMap(selectedComponentIds,false);
   setSelectAll(false);
  }
 }

 public void changeMap(Map<Long,Boolean> selectedComponentMap, Boolean blnValue){
  if(selectedComponentMap != null){
   Iterator<Long> itr = selectedComponentMap.keySet().iterator();
   while(itr.hasNext()){
    selectedComponentMap.put(itr.next(), blnValue);
   }
   setSelectedComponentIds(selectedComponentMap);
  }
 }

Je suis marquage de toutes les valeurs dans la liste, comme true, quand la case est cochée et false lorsque cette option est décochée.

Mais la page ne recharge pas les données correctement.

Est ma méthode d'approche du problème exact? Ou est-il une alternative efficace?

OriginalL'auteur Abdul | 2010-10-15