Atualizar lista no dataTable após excluir - JSF Primefaces

4,342 views
Skip to first unread message

Poliana Magalhães Reis

unread,
Jun 13, 2012, 3:02:06 PM6/13/12
to jav...@googlegroups.com
Olá Pessoal, 

Estou com o seguinte problema: 

Tenho uma lista de objetos que popula uma datatable. 
Tenho uma coluna com um botao excluir para cada objeto. 
Ao clicar neste botao, eu abro um Modal Dialog que tem um campo para colocar uma observacao antes de excluir. 
Após colocar uma observacao clico em enviar e o objeto é excluido com sucesso e o dialog é fechado, porém a lista não é atualizada. 
Ja coloquei o Bean como View Scoped, porém não atualiza a lista mesmo assim. 

Segue o código: 

xhtml 

  1. ...  
  2.                          <h:column>  
  3.                                 <f:facet name="header">Excluir</f:facet>   
  4.                                 <p:commandButton id="ExcluirDialogButton"  value="Excluir" onclick="popExcluir.show();" actionListener="#{meuBean.populaIdObjetoSelecionado(c.id)}"   styleClass="btn  btn-small"  style="width: 80px; "   />    
  5.                             </h:column>  
  6. </h:dataTable>  
  7.   
  8. ...  
  9. <p:dialog id="modalDialogExcluir" header="Excluir Solicitação" widgetVar="popExcluir" modal="true"  width="400" height="350" >    
  10.                     <h:form>  
  11.                         <h:outputText value="Observação:" />    
  12.                         <p:inputTextarea styleClass="obs-avaliacao" value="#{excluirBean.obs}" style="width: 350px; height: 200px;  "/>  
  13.   
  14.                         <br/>  
  15.                         <p:commandButton  id="excluirButton"  value="Enviar" action="#{meuBean.excluir()}"  oncomplete="popAprovar.hide()"   styleClass="btn  btn-small"  update="@all"  />  
  16.                     </h:form>  
  17.                 </p:dialog>    



no Managed Bean está assim 

  1. @ManagedBean  
  2. @ViewScoped  
  3. public class MeuBean {  
  4.   
  5. List listaObjetos = new ArrayList();  
  6. MeuServico service;  
  7. ....  
  8.   
  9. public String excluir() {  
  10.         service.excluir(i,1,obs);  
  11.         listaObjetos = service.atualizaLista();  
  12.         return "";  
  13.     }  

Alguém sabe como posso fazer?

Everton Fujimoto

unread,
Jun 13, 2012, 3:25:22 PM6/13/12
to jav...@googlegroups.com
tentou dar um update no datatable? Colocar o parâmetro update no p:commandButton


Att.
Everton William Fujimoto
Hecate Systems
CIO
(47)3394-5516
(47)9947-5481



--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Paulo Renner

unread,
Jun 13, 2012, 4:02:02 PM6/13/12
to jav...@googlegroups.com
O modo como eu faço é assim:

<h:form id="formA">
   <p:dataTable id="table">
      ...
   </p:dataTable>
</h:form>

<h:form id="formDialog">
   <p:dialog widgetVar="dialogVar">
      <p:commandButton update=":formA:table" oncomplete="dialogVar.hide();" />
   </p:dialog>
</h:form>

Não lembro direito onde, mas já vi dizendo que é bom colocar o dialog dentro de um form separado.

ayslan

unread,
Jun 13, 2012, 4:08:44 PM6/13/12
to jav...@googlegroups.com
Coloque o conteúdo do dialog em um form, essa é a melhor prática:

 <p:dialog widgetVar="dialogVar">
    <h:form id="formDialog">
        <p:commandButton update=":formA:table" oncomplete="dialogVar.hide();" />
     </h:form>
 </p:dialog>



--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Att,

Ayslan M. de Sousa

ayslan

unread,
Jun 13, 2012, 4:10:39 PM6/13/12
to jav...@googlegroups.com
Esse update="@all" não é bom usar, tenta especificar os IDs para fazer update.

Poliana Magalhães Reis

unread,
Jun 13, 2012, 5:20:05 PM6/13/12
to jav...@googlegroups.com
Muito obrigada pelas dicas pessoal. 

Consegui fazer aqui. 

A maneira que funcionou foi recarregar a lista no oncomplete do commandButton: 

substituí 

  1. oncomplete="popAprovar.hide()";   



por 

  1. oncomplete="popAprovar.hide(); #{meuBean.objetos}"  


Muito obrigada pelas dicas!
Reply all
Reply to author
Forward
0 new messages