【问题标题】:Primefaces dataTable multiple selection same objectPrimefaces dataTable 多选同一个对象
【发布时间】:2013-09-17 18:32:27
【问题描述】:

我在使用复选框的 dataTable 多选时遇到问题(如第二个:http://primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf)。 当我尝试在我的 backingBean 中执行一个方法时,所选项目总是具有正确的大小,但是具有相同的对象。 示例:我在 dataTable 中选择了三个消息:消息 1、消息 2 和消息 3。当我在 JSF 页面中执行我的方法时,我选择的项目如下:

Messages[0] = Message 1
Messages[1] = Message 1
Messages[2] = Message 1

这是我的 JSF 页面:

<p:dataTable id="mensagensLidas" var="msg" value="#{mensagensBean.msgGrupoModel}" 
paginator="true" rows="10" selection="#{mensagensBean.selectedMsgsGrupo}">

    <p:column selectionMode="multiple" style="width:2%"/>

    <p:column headerText="Titulo:" style="width:49%">  
        #{msg.titulo}  
    </p:column>

    <f:facet name="footer">
        <p:commandButton id="multiViewButton" value="#{msgs.delete}" icon="ui-icon-trash" actionListener="#{mensagensBean.excluirMsgsGrupo}" update=":tabMain" ajax="true"/>
    </f:facet>

</p:dataTable>

【问题讨论】:

标签: jsf primefaces datatable


【解决方案1】:

除了我使用的是rowKey之外,您上面的代码对我来说工作正常。
尝试在p:dataTable 中使用rowKey 属性

<p:dataTable id="mensagensLidas" var="msg" value="#{mensagensBean.msgGrupoModel}" 
                paginator="true" rows="10" selection="#{mensagensBean.selectedMsgsGrupo}"
                rowKey="#{msg.titulo}">
....

</p:dataTable>

当您在 Datables 中进行选择时,使用 rowKey 是必须且最佳的做法,它有助于将选定的 &lt;tr&gt; 映射到您正在填写的 POJO。
通常,如果您的 rowKey 是唯一属性,则更好,您甚至可以在您的 #{msg} POJO 中放置一个整数变量作为最佳实践。

【讨论】:

  • 他的 primefaces 示例不使用 rowKey :/ 它使用 CarDataModel
  • 有时 Primefaces Showcase 不会显示完整代码。你用 rowKey 试试,它完全有效。
  • 我发现了问题。我的 DataModel 与 getRowData 总是返回相同的对象。我做了一个错误的比较。谢谢大家!
【解决方案2】:

我发现了问题。我的 DataModel 与 getRowData 总是返回相同的对象。我做了一个错误的比较。谢谢大家!

【讨论】:

    猜你喜欢
    • 2013-09-07
    • 2016-10-19
    • 2012-06-07
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    相关资源
    最近更新 更多