Подтвердить что ты не робот

DataModel должен реализовать org.primefaces.model.SelectableDataModel, когда выбор включен

Я пытался реализовать один DataTable Editable с включенным RowSelection.

Но это исключает исключение:

DataModel должен реализовать org.primefaces.model.SelectableDataModel, когда выбор включен.

Я реализовал DataModel как в классе объекта, так и в управляемом классе bean, но ошибка такая же. Теперь для меня появляется только пустой стол. Пожалуйста, помогите.

4b9b3361

Ответ 1

Для этой проблемы существует два решения:

  • Добавление атрибутов rowKey, selection и selectionMode в dataTable
  • Внедрение интерфейса SelectableDataModel и расширение DataModel, например ListDataModel для заполнения dataTable

Первый - это Проще. Добавление rowKey="#{myEntity.carID}" к вашему p:dataTable должно решить вашу проблему

Ответ 2

Вы можете получить эту ошибку, если попытаетесь добавить новый элемент в базовый список и забудьте присвоить значение новому элементу rowKey. Или, другими словами, для примера, если myEntity.carID имеет значение null.

Ответ 3

В дополнение к решениям, данным тряпками, я хотел бы упомянуть, что если ключ строки "NULL" или весь ваш список "NULL", вы можете получить ту же ошибку, даже если вы завершили все вышеперечисленное упомянутых шагов. Если вы хотите показать 0 строк, верните список с 0 элементами. Не возвращайте нулевой список.

Столкнулась с той же проблемой и была решена вышеупомянутым способом.

спасибо

Ответ 4

Сообщение об ошибке указывает, что ваш DataModel не реализует интерфейсы SelectableDataModel. Это должен быть отдельный класс. Это пример из витрины PF, как должно выполняться определение таблицы данных:

import org.primefaces.model.SelectableDataModel;  

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

Ответ 5

Не забывайте окружать значение rowKey в синтаксисе EL. rowKey = "row.id" не удастся, но rowKey = "# {row.id}" будет успешным.