如何获取dataTable中的选定数据?我使用这种方式是因为它是寄存器的“编辑”。
<p:dataTable id="dataTable" var="valor" style="width:100%; text-align:center"
value="#{beanMensagemXContato.dataModelMsg}"
selection="#{beanMensagemXContato.selectedMensagemAssociada}"
paginator="true" rows="6" >
<f:facet name="header">
Mensagens
</f:facet>
<p:column style="width:5%">
<p:selectBooleanCheckbox value="#{valor.associada}" >
<p:ajax process="@form" event="valueChange" listener="# {beanMensagemXContato.adicionarMensagemContato}">
<f:param name="messageSelecionada" value="#{beanMensagemXContato.msgAssociada}" />
</p:ajax>
</p:selectBooleanCheckbox>
</p:column>
...
</p:dataTable>
我将按Bean选择数据作为事件选择事件:
public void adicionarMensagemContato (SelectEvent event){
Mensagem mensagem = ((MensagemAssociada) event.getObject()).getMensagem();
MensagemAssociada mensagemAssociada = (MensagemAssociada) event.getObject();
...
}
但是我无法将数据与事件 ValueChange 一起获取。我尝试过通过标签选择模式=“多个”来选择SelectEvent,设法在那一刻选择数据,以前选择并从数据库中读取的数据不会出现,仅在xhtml中上面列出的方式使用。
我已经感谢你的帮助了。
所选内容存储在您的 Bean 字段中:
selection="#{beanMensagemXContato.selectedMensagemAssociada}"
如果adicionarMensageContato方法位于同一个bean中,您可以毫无问题地访问您的选择:
public void adicionarMensagemContato (SelectEvent event){
doSomething(this.selectedMensagemAssociada);
}
另一种方法是使用f:setPropertyActionListener-它允许您将当前行中的元素存储在bean字段中(下面的示例显示了如何在通过单击按钮调用的操作中访问当前元素):
<p:dataTable var="objectFromCurrentRow" ...>
...
<p:column ...>
<p:button ... action=#{beanMensagemXContato.performAnActionOnCurrentElement} ...>
<f:setPropertyActionListener value="#{objectFromCurrentRow}" target="#{beanMensagemXContato.selectedMensagemAssociada}" />
</p:button>
...