我有一个可编辑的Primefaces Datatable,配置为在编辑单元格时调用onCellEdit()方法。一切都很好,除了CellEditEvent.rowKey始终为null,尽管在数据表声明中使用' rowKey ='将其明确设置为有效值。 Primefaces Datatable documentation让我相信我需要rowKey来获取包含正在编辑的单元格的行的内容。我需要整个行的内容,以便我可以将显示的数据与数据库中的相同数据进行比较,以确定自数据表呈现以来是否已由另一个客户端更改了持久数据,捕获并发编辑。
答案 0 :(得分:1)
在使用行可选择的数据表读取rowKey为空的十几个帖子之后,我终于意识到rowKey是在行选择上填充的,而不是在单元格编辑上。但是,rowIndex在单元格编辑时不为空,并且可靠地给出了行号(从零开始),因此我可以检索整行的内容,以及用于填充行的对象的值(在我的情况下包括我想从Datatable.getValue()放入rowKey的值。 rowKey的目的在文档中并不清楚(对我而言),所以我想我会为遇到类似问题的人分享这个。
答案 1 :(得分:0)
根本原因已经由@snakedog解释。我将添加用于解决该问题的代码。
这是您应放在p:datatable中的属性:
selectionMode =“单”
如果您不想在视觉上看到选择突出显示的内容,请同时添加disabledSelection="true"
。