【发布时间】:2017-12-14 12:16:30
【问题描述】:
我需要 Primefaces 数据表的帮助。
我尝试使用单选模式实现 dataTable。 当我选择表中的任何行时,它会被正常选择。但是我在调试模式下看到 selectedUser 字段始终具有相同的值(第一个表的项),而不管实际的 UI 选择。
我的问题是我的代码有什么问题?
不幸的是,谷歌请求“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作为模板
我的“rowSelect”事件方法如下:
public void onResultTableRowSelect(SelectEvent event) {
summaryObjects.clear();
summaryObjects.add(selectedUser);
}
summaryObjects 是我传入另一个表的列表。
提到 SearchFormBean 是 ViewScoped。
你能帮我找出我的错误吗?如有必要,我会提供任何其他信息。
谢谢。
【问题讨论】:
-
使用 ajax rowSelect 时,我总是通过事件检索所选对象并实现选择属性的空设置器,在您的情况下为
setSelectedUser -
嗨@Kukeltje,谢谢你的回复听起来不错。我试过你的方法,但它对我不起作用。我将 rowSelect 方法更改为
selectedUser = (User) event.getObject();,启动调试器,发现event.getObject()返回相同的对象。
标签: jsf primefaces datatable