2013-10-21 52 views
0

如何获取选定的dataTable数据?我用这种方式,因为它是一个寄存器的“编辑”。选择数据复选框 - DataTable - Primefaces

<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> 

我会被挑豆的数据作为事件SelectEvent:

public void adicionarMensagemContato (SelectEvent event){ 

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

... 

} 

但我不能与事件ValueChange取数据。我已经通过标签selectionMode =“multiple”尝试了SelectEvent,设法得到当时选择的数据,之前从数据库中选择并读取的数据不会出现,只有在上面列出的xhtml中才使用。

我已经很感激帮助。

回答

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> 
    ...