在我的JSF页面中,我有一个像这样的数据表:
<p:datatable var="item" value="#{bean.dataModel}" rowkey="#{item.pkey}" selectionMode="multiple" selection="#{bean.selectedItems}">
在我的managedbean中,我已将selectedItems声明为如此列表
private List<SelectedItemsClass> selectedItems;
public void doInit() {
selectedItems = new ArrayList<SelectedItemsClass>();
}
我还为selectedItems
宣布了getter和setter。现在,当我尝试调试检查selectedItems
的某个操作时,selectedItems
大小的值始终为0.我的代码中缺少某些内容吗?我试图在网上搜索,答案总是使用selection =&#34;&#34;在数据表中。请指教!
更新:问题的原因与数据表和数据模型本身无关。事实证明,问题是我在datamodel类中用于rowkey的数据类型。我为rowkey设置了字符串值,但我的数据库返回的键为long类型。通过更改我的rowkey的数据类型,selectedItems现在成功传递给我的managedbean,我能够从那里处理所选的项目。非常感谢你的时间。
答案 0 :(得分:2)
您需要在jsf数据表配置中添加ajax事件,如下所示:
<p:dataTable ...>
<p:ajax event="rowSelectCheckbox" process="@this"/>
<p:ajax event="rowUnselectCheckbox" process="@this"/>
<p:ajax event="toggleSelect" process="@this" />