Primefaces数据表返回相同的选择项

时间:2017-07-10 16:43:29

标签: jsf primefaces datatable

我需要Primefaces dataTable的一些帮助。

我尝试使用单选模式实现dataTable。 当我选择表格中的任何一行时,它会被正常选中。但我在调试模式中看到,无论真正的UI选择如何,selectedUser字段总是具有相同的值(第一个表的项目)。

我的问题是我的代码出了什么问题?

不幸的是谷歌请求" primefaces数据表错误选择"没有回复任何可以帮助我的事情,我不敢问社区。

我还发现了以下例子:
primefaces datatable selected row always the same value 但这也不是我的理由。

我认为(根据谷歌示例和PF文档)当我们选择一行时,此操作会自动触发"选择"对象二传手。这是错的吗?

我的PF版本是5.3

该表具有以下定义:

<p:dataTable scrollable="true" id="SearchResultsTable" value="#{searchFormBean.users}" var="item" scrollHeight="300"
     widgetVar="SearchResultsTable" selectionMode="single" selection="#{searchFormBean.selectedUser}" 
     rowKey="#{not empty item.usersListId ? item.usersListId : item.hashCode()}" emptyMessage="No rows found.">

     <p:ajax event="rowSelect" listener="#{searchFormBean.onResultTableRowSelect}" update=":searchPage:j_idt68:summaryTable" />

     // Columns

我使用以下example作为模板

我的&#34; rowSelect&#34;事件方法如下:

public void onResultTableRowSelect(SelectEvent event) {

        summaryObjects.clear();

        summaryObjects.add(selectedUser);

    }

其中summaryObjects是我传递到另一个表的List。

提到的SearchFormBean是ViewScoped。

你可以帮我找到我的错误。如果有必要,我会提供任何其他信息。

谢谢。

1 个答案:

答案 0 :(得分:0)

我发现了我的错误并解决了这个问题。 事实证明,我用作某个项的rowKey的item.usersListId为null。这意味着该值至少不是唯一的。我认为构造not empty item.usersListId ? item.usersListId : item.hashCode()保证了唯一性。但在我的情况下使用是不正确的。 我刚刚将rowKey值更改为另一个唯一且选择功能变得正确。

谢谢。