我有一个可选择的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访问 Grave:javax.faces.FacesException:当启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel。
但我已根据FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled设置了rowKey
。这是怎么造成的,我该如何解决?
答案 0 :(得分:8)
当rowKey
属性中的EL表达式评估null
时,可能会发生这种情况。
确保name
个实例的Group
属性为从不 null
。否则,最好使用表示自动生成的DB主键的属性,例如#{group1.id}
- 如果有的话。
答案 1 :(得分:-1)
仅供参考 - 使用Primefaces列过滤器时遇到了同样的错误。如果我使用过滤器并单击刷新按钮来重新加载表,那么我会遇到错误。如果我不使用列过滤器,那么当我刷新表时,错误永远不会发生。我有几个列过滤器,通过提取名字或姓氏,在包含全名的同一字段上执行过滤器逻辑,所以我怀疑这个问题与这些过滤器有关。我还没有弄清楚这个问题,但我想与你分享这个问题,以防万一。我正在使用rowKey。