我遇到了带有复选框的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>
答案 0 :(得分: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。
通常情况下,如果rowKey
具有独特的性能,您甚至可以将#{msg}
POJO中的整数变量作为最佳实践。
答案 1 :(得分:0)
我发现了这个问题。我的DataModel与getRowData一起返回的是同一个对象。我做了一个错误的比较。谢谢大家!