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
Vous devez vous connecter pour publier un commentaire.
C'est parce que la
ValueChangeEvent
se produit avant la mise à jour du modèle de phase, de sorte que la valeur à modifier est écrasée.Cela, dans le
public void selectAllComponents(ValueChangeEvent event)
corriger les noms de méthode sont getPhaseId() et setPhaseId() comme décrit dans la spec download.oracle.com/docs/cd/E17802_01/j2ee/j2ee/javaserverfaces/...
OriginalL'auteur Adam
Ou juste avant votre code d'ajouter la ligne suivante de code dans votre méthode originale
selectAll = (Boolean) de l'événement.getNewValue();
OriginalL'auteur Eldin