我在jsf + icefaces中创建了selectALL复选框功能。我已经实现了功能,比如当我选中selectAll复选框时,它会选中所有页面上的所有复选框。但是当我进行分页并且如果我选中/取消选中时选择所有复选框,则其仅适用于该页面而不是所有页面。我的意思是行复选框的状态不一致。我尝试使用phaseListener解决这个问题,但没有运气..任何人都可以向我推荐解决方案..
我的代码:jsf
<ace:column id="checkBox">
<f:facet name="header">
<h:outputLabel>
<ice:selectBooleanCheckbox id="selectAllID"
value="#{shipBean.checkAll}"
valueChangeListener="#{shipBean.getCheck}"
partialSubmit="true" />
</h:outputLabel>
</f:facet>
<ice:selectBooleanCheckbox id="selectOne"
value="#{freight.checkBox}">
的java:
if (shipTrackingData != null) {
if (shipTrackingData.getCheckAll()) {
for (ShipTrackBean check : shipTrackingData
.getShipTrackList()) {
check.setCheckBox(true);
}
} else {
for (ShipTrackBean check : shipTrackingData
.getShipTrackList()) {
check.setCheckBox(false);
}
}
}
谢谢...
答案 0 :(得分:0)
我已经为JSF应用程序测试了这段代码,我有三页:
index_1.xhtml index_2.xhtml index_3.xhtml
@ManagedBean
@SessionScoped
public class pross {
private boolean challval=false;
private boolean chval1=false;
private boolean chval2=false;
private boolean chval3=false;
.. getters and setters....
}
在每个页面中,我创建了两个复选框,如果在其中任何页面中选中,则会在所有页面中选择其中一个,但该复选框与所有页面的相同值(challval)相关。 页面本身还有另一个复选框,每个复选框一个(chval1,chval2,chval3)。
为了测试这个,我为每个页面编写了这个xhtml代码,但你需要根据每个页面更改值,这里是index_1.xhtml的代码,你需要更改&#34;转到&#34;链接,以便能够访问其他页面:
<h:body>
<h:form>
Hello, Test checkboxes:
<br />
Select this page: <h:selectBooleanCheckbox value="#{pross.chval1}" >
<f:ajax render="outthis outall"/>
</h:selectBooleanCheckbox>
This page select: <h:outputText id="outthis" value="#{pross.chval1}"/>
<br/>
Select all pages: <h:selectBooleanCheckbox value="#{pross.challval}">
<f:ajax render="outthis outall"/>
</h:selectBooleanCheckbox>
all pages select: <h:outputText id="outall" value="#{pross.challval}"/>
<br/>
<h:link outcome="index_2" value="Go to page 2" />
<br/>
<h:link outcome="index_3" value="Go to page 3" />
</h:form>
</h:body>
我在这里看到没有问题,当我检查&#34;选择所有&#34;在一个页面中,它仍然在其他页面中检查,我认为这个想法是连接&#34;选择所有&#34;所有页面具有相同bean值的复选框。 希望这很有用,谢谢。