0

我在使用复选框的 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>
4

2 回答 2

1

除了我使用的是rowKey.
尝试使用rowKey属性p:dataTable

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

</p:dataTable>

当您在 Datables 中进行选择时,使用rowKey是必须和最佳实践,它有助于将所选内容映射<tr>到您正在填充的 POJO。通常,如果您具有独特的属性
会更好,您甚至可以在POJO 中放置一个整数变量作为最佳实践。rowKey#{msg}

于 2013-09-17T19:09:50.073 回答
0

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

于 2013-09-19T23:41:45.947 回答