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.