我正在使用Mojarra,PrimeFaces和Tomcat 6.x开发JSF 2.0项目
我只使用selectManyCheckbox创建了一个动态表单。
我有以下代码:
<ui:repeat value="#{wagent.prArticles}" var="theme">
<h:selectManyCheckbox layout="pageDirection" styleClass="pressReviewTable" value="#{bean.selectedArticles}">
<f:selectItems value="#{theme.articles}" var="prArt" itemLabel="#{prArt.prLabel}" itemValue="#{prArt.id}" itemLabelEscaped="false"/>
</h:selectManyCheckbox>
</ui:repeat>
selectedArticles是实体列表。
我在网上看到,selectManyCheckbox的值可以指向String[]
或List<String>
。
使用此代码,selectedArticles不包含所有选中的值,只包含最新检查的组。
如何获取所有选中的值?
答案 0 :(得分:2)
基本上,value
必须绑定到当前迭代的项目,例如theme
。
<ui:repeat value="#{wagent.prArticles}" var="theme">
<h:selectManyCheckbox value="#{theme.selectedArticles}">
...
</h:selectManyCheckbox>
</ui:repeat>
在bean操作方法中,访问#{wagent.prArticles}
后面的属性以获取所有选中的值。
当您将值绑定到外部bean时,您现在遇到的内容确实会发生。基本上,JSF将覆盖每个迭代项的检查值,直到最后一项。这就是为什么你只看到最后一个迭代项的选中值。