我試圖使用單個複選框選擇/取消選中數據表中的所有複選框。正如我試圖在服務器上設置它,我無法這樣做。我已經四處尋找解決方案,但無法在服務器端完成如何完成。選擇JSF中的所有複選框而不使用Javascript
這是代碼。
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>
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);
}
}
我選中標記時,在列表中的所有值true
當複選框被選中,並false
。
但是頁面沒有正確地重新載入數據。
我的方法是否正確處理問題?還是有一個有效的選擇?
請參閱http://stackoverflow.com/questions/2929037/select-and-unselect-list-of-checkboxes-with-single-checkbox – Krumb 2012-04-26 16:24:05