数据表上的选定项目未传递给辅助bean

时间:2014-07-14 07:53:25

标签: jsf primefaces

在我的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,我能够从那里处理所选的项目。非常感谢你的时间。

1 个答案:

答案 0 :(得分:2)

您需要在jsf数据表配置中添加ajax事件,如下所示:

<p:dataTable ...>
<p:ajax event="rowSelectCheckbox" process="@this"/>
<p:ajax event="rowUnselectCheckbox" process="@this"/>
<p:ajax event="toggleSelect" process="@this" />