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

У меня есть выборка данных PrimeFaces 3.4.1:

<p:dataTable value="#{projectAdminisrationMB.selectedUserMemberOfGroups}" var="group1" 
    rowKey="#{group1.name}" selectionMode="single" selection="#{projectAdminisrationMB.selectedBelongToGroup}">
    ...
</p:dataTable>

Я получаю эту ошибку:

com.sun.faces.context.PartialViewContextImpl $ PhaseAwareVisitCallback visit Grave: javax.faces.FacesException: DataModel должна реализовывать org.primefaces.model.SelectableDataModel, когда выбор включен.

Но я уже установил rowKey согласно FacesException: DataModel должен реализовывать org.primefaces.model.SelectableDataModel, когда выбор включен. Как это вызвано и как я могу решить это?

2 ответа

Это может произойти, когда выражение EL в rowKey атрибут когда-либо оценивает null,

Убедитесь, что name собственность вашего Group экземпляр никогда не бывает null, В противном случае лучше использовать свойство, представляющее автоматически сгенерированный первичный ключ БД, например #{group1.id} - если у тебя есть.

Просто к вашему сведению - я столкнулся с той же ошибкой при использовании фильтров столбцов Primefaces. Если я использую фильтры и нажимаю кнопку обновления, чтобы перезагрузить таблицу, я получаю сообщение об ошибке. Если я не использую фильтры столбцов, то при обновлении таблицы ошибка не возникает. У меня есть пара фильтров столбцов, которые выполняют логику фильтра для того же поля, которое содержит полное имя, извлекая либо имя, либо фамилию, поэтому я подозреваю, что эта проблема связана с этими фильтрами. Я еще не выяснил проблему, но хотел бы поделиться этим с вами на случай, если это поможет. И я использую rowKey.

Другие вопросы по тегам