我试图在启用RowSelection的情况下实现一个DataTable Editable。
但这是一个例外:
DataModel必须实现org.primefaces.model.SelectableDataModel 选择已启用。
我在对象类和托管bean类中实现了DataModel,但错误是相同的。现在只为我显示一个空白表。请帮忙。
答案 0 :(得分:39)
此问题有两种解决方案:
第一个是简单的。向rowKey="#{myEntity.carID}"
添加p:dataTable
可以解决您的问题
答案 1 :(得分:21)
如果您尝试将新项添加到基础列表并忘记为新项的rowKey分配值(rowKey为null),则可能会出现此错误。
答案 2 :(得分:3)
除了rags给出的解决方案之外,我想提一下,如果行键为“NULL”或者如果整个List为“NULL”,即使您已完成以上所有操作,也可能会出现相同的错误提到的步骤。如果要显示0行,则返回包含0个项目的列表。不要为列表返回null
。
答案 3 :(得分:2)
错误消息表明您的DataModel未实现SelectableDataModel
接口。它需要是一个单独的类。这是PF展示如何完成数据表定义的示例:
import org.primefaces.model.SelectableDataModel;
public class CarDataModel extends ListDataModel<Car> implements SelectableDataModel<Car> {
...
}
答案 4 :(得分:0)
不要忘记在EL语法中包围rowKey值。
rowKey="row.id"
会失败,但
rowKey="#{row.id}"
会成功。
答案 5 :(得分:0)
可能的错误是因为在我的情况下row.id为空或为null 更改此:
rowKey="row.id"
对此:
rowKey="row"
例如数据表的对象
List<Row> collectionOfDataTable = new ArrayList<>();
行(对象)实现可序列化:
public class Row implements Serializable{...}