启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel

问题描述 投票:23回答:5

我试图在启用RowSelection的情况下实现一个DataTable Editable。

但它抛出了一个例外:

启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel。

我在对象类和托管bean类中实现了数据模型,但错误是相同的。现在只为我显示一个空白表。请帮忙。

jsf primefaces
5个回答
39
投票

这个问题有两种解决方案:

  1. 将rowKey,selection和selectionMode属性添加到dataTable
  2. 实现SelectableDataModel接口并扩展类似ListDataModel的DataModel以填充dataTable

第一个是简单的。将rowKey="#{myEntity.carID}"添加到您的p:dataTable应该可以解决您的问题


21
投票

如果您尝试将新项添加到基础列表并忘记为新项的rowKey分配值(rowKey为null),则可能会出现此错误。


3
投票

除了rags给出的解决方案之外,我想提一下,如果行键为“NULL”或者整个List为“NULL”,即使您已完成上述所有步骤,也可能会出现相同的错误。如果要显示0行,则返回包含0个项目的列表。不要返回null列表。


2
投票

该错误消息表明您的DataModel未实现SelectableDataModel接口。它需要是一个单独的类。这是PF展示如何完成数据表定义的示例:

import org.primefaces.model.SelectableDataModel;  

public class CarDataModel extends ListDataModel<Car> implements SelectableDataModel<Car> {    
   ...
}

0
投票

不要忘记在EL语法中包围rowKey值。

rowKey="row.id" 

会失败但是

rowKey="#{row.id}" 

将会成功。

© www.soinside.com 2019 - 2024. All rights reserved.