选择数据Checkbox - DataTable - Primefaces

时间:2013-10-21 10:47:23

标签: java jsf jsf-2 primefaces datatable

如何获取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的数据作为事件SelectEvent:

public void adicionarMensagemContato (SelectEvent event){

    Mensagem mensagem = ((MensagemAssociada) event.getObject()).getMensagem();
    MensagemAssociada mensagemAssociada = (MensagemAssociada) event.getObject();

...

}

但我无法使用事件ValueChange获取数据。我已经尝试使用SelectEvent by tag selectionMode =“multiple”,设法获取当时选择的数据,之前从数据库中选择和读取的数据不会出现,只能在xhtml中列出的方式使用。

我已经感谢你的帮助了。

1 个答案:

答案 0 :(得分:0)

选择存储在bean字段中:

selection="#{beanMensagemXContato.selectedMensagemAssociada}" 

如果adicionarMensagemContato方法位于同一个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>
    ...