wählen Sie Alle Kontrollkästchen in JSF ohne Verwendung von Javascript
Ich versuche zu selektieren/deselektieren aller Checkboxen in der datatable mit einer einzelnen checkbox. Als ich bin versucht, es auf dem server, ich bin nicht in der Lage, dies zu tun. Ich habe umgeschaut nach Lösungen, konnten aber nicht, wie das zu erreichen auf der server-Seite.
Hier ist der code.
xhtml-Datei###
<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>
Java-Datei
//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);
}
}
Ich bin markieren Sie alle Werte in der Liste als true
wenn der checkbox überprüft wird und false
wenn die Option deaktiviert ist.
Aber die Seite nicht neu laden, die Daten ordnungsgemäß.
Ist meine Methode, um Ansatz, um das problem zu korrigieren? Oder ist es eine effiziente alternative?
InformationsquelleAutor Abdul | 2010-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es, weil die
ValueChangeEvent
tritt auf, bevor das update-Modell phase, also der Wert, den Sie ändern, wird Sie überschrieben.Tun Sie dies in der
public void selectAllComponents(ValueChangeEvent event)
richtige Methode Namen sind getPhaseId() und setPhaseId (), wie beschrieben in spec download.oracle.com/docs/cd/E17802_01/j2ee/j2ee/javaserverfaces/...
InformationsquelleAutor Adam
Oder einfach nur, bevor Sie Ihren code hinzufügen nächste Zeile code in der ursprünglichen Methode
selectAll = (Boolean) - Ereignis.getNewValue();
InformationsquelleAutor Eldin