DataTable et booleancheckBox
Bonjour à vous,
J'ai un problème assez étrange à vous soumettre et je dois avouer que je ne comprends pas du tout ce comportement.
Je possède un tableau avec une colonne comprenant des checkBox. Jusque là, tout va bien
Code:
1 2 3 4 5 6
| </rich:column>
<rich:column width="15px" styleClass="#{liste.styleClass}" style="text-align:center">
<a4j:outputPanel id="refreshCheckBox" ajaxRendered="true">
<h:selectBooleanCheckbox value="#{liste.selected}" id="chk_rh" />
</a4j:outputPanel>
</rich:column> |
J'ai un menu déroulant permettant d'effectuer diverses selections sur mon tableau (selectionner tous, aucun, juste les absences, etc)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <rich:toolBarGroup>
<rich:dropDownMenu>
<f:facet name="label">
<h:panelGroup>
<h:graphicImage id="selectAll" url="images/select.gif" />
<h:outputText value="#{langRh.selectAll}" />
</h:panelGroup>
</f:facet>
<rich:menuItem submitMode="ajax" value="#{langRh.menuitem_cras}"
action="#{rhBean.selectAllCra}" reRender="refreshCheckBox" />
<rich:menuItem submitMode="ajax" value="#{langRh.menuitem_absences}"
action="#{rhBean.selectAllAbsences}" reRender="refreshCheckBox" />
<rich:menuItem submitMode="ajax" value="#{langRh.menuitem_all}"
action="#{rhBean.selectAll}" reRender="refreshCheckBox" />
<rich:menuItem submitMode="ajax" value="#{langRh.menuitem_nothing}"
action="#{rhBean.deselectAll}" reRender="refreshCheckBox" />
</rich:dropDownMenu>
</rich:toolBarGroup> |
Voici le code de la fonction SelectAll :
Code:
1 2 3 4 5 6 7 8 9 10
| /**
* Selectionne toutes les lignes du tableau
*/
public void selectAll() {
for (ElementAValiderDTO e : maListElAValider) {
if(!e.isSelected()){
e.setSelected(true);
}
}
} |
Je récupere les objets présents dans mon tableau et assigne la valeur selected (qui est celle des checkbox) qui va bien.
Ceci marche impécable, j'ai les réactions voulu.
Seulement, ça marche beaucoup moins bien à partir du moment ou j'ai déjà une case de selectionnée avant d'effectuer une des actions de mon DropMenu.
Quand j'effectue une action selectAll par exemple, les assignements des attributs "selected" se font correctement mais les checkbox de mon tableau reste dans leur état de départ (elle ne se coche ou décoche pas).
Le plus étrange dans tout ca, c'est que les objets ont bien leur nouvelle valeur de selected mais que l'affichage des checkboxs du tableau est mauvais (alors que ça marche très bien sans cocher de case au départ)
Voilà, vous avez une idée d'ou ça pourrait venir ?
Merci d'avance.