我正在使用 primefaces 数据表进行基于复选框的选择,并尝试实现给定的示例。他们使用 Model 说,userModel可以实现 SelectableDataModel 接口。我不想使用模型,所以我为此使用了 rowKey 。
例如
数据表.xhtml
<p:dataTable id="table" var="item" value="#{userBean.allItems}"
paginatorPosition="bottom" paginator="true" rows="3"
selection="#{userBean.selectedItems}" rowKey="#{item[0]}">
<p:column selectionMode="multiple"/>
<p:columns value="#{userBean.itemColHeader}" columnIndexVar="colIndex" var="colName" >
<f:facet name="header" >
<h:outputText value="#{colName}"/>
</f:facet>
<h:outputText value="#{item[colIndex]}"/>
</p:columns>
</p:dataTable>
这里,
allItems = ArrayList<ArrayList<String>>
selectedItems = ArrayList<ArrayList<String>>
selectedItems = ArrayList<String>
用户Bean.java
@ManagedBean(name="userBean")
@ViewScoped
public class userBean implements SelectableDataModel {
private ArrayList<ArrayList<String>> selectedItems;
public ArrayList<ArrayList<String>> getSelectedItems() {
return selectedItems;
}
public void setSelectedItems(ArrayList<ArrayList<String>> selectedUsers) {
this.selectedItems = selectedItems;
}
}
我的问题:
1) When I select mulitple rows, selectedUsers remains empty.
2) After selecting next page, previous selection get lost.
我浏览了@BelusC博客,发现绑定是可能的解决方案,但无法通过他的说明解决我的问题。是否需要转换器..?我的方法有什么问题吗。谢谢
更新:1
使用 Arraylist 的 Arraylist( allItems ) 的原因只是为了使数据表通用。在绘制数据表时,我不需要担心列数。这就是为什么我要检索不应依赖于对象的选定项目(如:car[] selectedcars)