Сообщение об исключении вводит в заблуждение. Реализация только интерфейса SelectableDataModel
недостаточна. Вам также необходимо расширить реализацию DataModel
, такую как ListDataModel
. Это не может быть сделано в духе анонимного класса. Вам действительно нужно создать еще один класс.
public class ProductDataModel extends ListDataModel<Product> implements SelectableDataModel<Product> {
// ...
}
Вы можете при необходимости сгенерировать его, если у вас есть общее базовое право (с getId()
и так далее), так что вам не нужно создавать еще одно для каждой сущности.
public class BaseEntityDataModel<E extends BaseEntity> extends ListDataModel<E> implements SelectableDataModel<E> {
// ...
}
В качестве совершенно другой альтернативы вы также можете использовать rowKey
атрибут <p:dataTable>
и позволить ему ссылаться точно на то же значение, что и SelectableDataModel#getRowKey()
. Таким образом, вам больше не нужен весь интерфейс SelectableDataModel
.
<p:dataTable ... rowKey="#{product.model}">
Смотри также: