启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel,但我已经定义了rowKey

时间:2012-11-12 11:02:30

标签: jsf primefaces selectable row-key

我有一个可选择的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。这是怎么造成的,我该如何解决?

2 个答案:

答案 0 :(得分:8)

rowKey属性中的EL表达式评估null时,可能会发生这种情况。

确保name个实例的Group属性为从不 null。否则,最好使用表示自动生成的DB主键的属性,例如#{group1.id} - 如果有的话。

答案 1 :(得分:-1)

仅供参考 - 使用Primefaces列过滤器时遇到了同样的错误。如果我使用过滤器并单击刷新按钮来重新加载表,那么我会遇到错误。如果我不使用列过滤器,那么当我刷新表时,错误永远不会发生。我有几个列过滤器,通过提取名字或姓氏,在包含全名的同一字段上执行过滤器逻辑,所以我怀疑这个问题与这些过滤器有关。我还没有弄清楚这个问题,但我想与你分享这个问题,以防万一。我正在使用rowKey。