我需要Primefaces dataTable的一些帮助。
我尝试使用单选模式实现dataTable。 当我选择表格中的任何一行时,它会被正常选中。但我在调试模式中看到,无论真正的UI选择如何,selectedUser字段总是具有相同的值(第一个表的项目)。
我的问题是我的代码出了什么问题?
不幸的是谷歌请求" primefaces数据表错误选择"没有回复任何可以帮助我的事情,我不敢问社区。 p>
我还发现了以下例子:
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。
你可以帮我找到我的错误。如果有必要,我会提供任何其他信息。谢谢。
答案 0 :(得分:0)
我发现了我的错误并解决了这个问题。
事实证明,我用作某个项的rowKey的item.usersListId
为null。这意味着该值至少不是唯一的。我认为构造not empty item.usersListId ? item.usersListId : item.hashCode()
保证了唯一性。但在我的情况下使用是不正确的。
我刚刚将rowKey值更改为另一个唯一且选择功能变得正确。
谢谢。