[RESOLVIDO] Ajuda <p:commandButton> PrimeFaces

Olá galera do GUJ, estou com problema com o botão Ajax do primefaces, ao clickar no botão deletar dentro do data table o item é removido normalmente mas porém o item não é retirado da lista ou seja a tabela não está sendo renderizada, alguém sabe o pq?, de fora do data table ele renderiza normal. o Botão está na linha 53.

Obs: estou utilizando a versão corrente do primefaces.

?xml version='1.0' encoding='UTF-8' ?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:p="http://primefaces.prime.com.tr/ui"  
    xmlns:f="http://java.sun.com/jsf/core">  
<f:view contentType="text/html">  
  
</f:view>  
<h:head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
    <link rel="stylesheet" type="text/css" href="../estilos/padrao.css"/>  
</h:head>  
<h:body>  
    <h:form prependId="false">  
        <p:panel id="panel" header="Manutenção de Funcionário">  
            <table width="100%">  
                <tr>  
                    <td>  
                        <p:commandButton value="Cadastrar" actionListener="#{funcionarioFrm.cadastrar}" ajax="false"/>  
                    </td>  
                    <td width="40px" align="center">  
                         <p:ajaxStatus>    
                             <f:facet name="start">    
                                <h:graphicImage value="../imagens/loader.gif" />    
                             </f:facet>    
                             <f:facet name="complete">    
                                <h:outputText value="" />    
                             </f:facet>    
                         </p:ajaxStatus>   
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        <h:outputText value="Nome: " />   
                        <p:inputText id="nome" value="#{funcionarioFrm.nome}" />     
                        <p:commandButton value="Pesquisar" action="#{funcionarioFrm.pesquisar}" update="tabela,msgs" />  
                    </td>  
                </tr>  
            </table>  
            <table width="100%">  
                <tr>  
                    <td>  
                        <div style="height:300px; width:100%">  
                            <p:dataTable  id="tabela" var="item" value="#{funcionarioFrm.colecao}" paginator="true"  
                                rows="4" styleClass="margin:0px;"  
                                scrollable="true" liveScroll="true"  
                                style="width:960px;">  
                                 
                                <p:column headerText="AÇÃO" style="width:130px">  
                                    <p:commandButton title="Alterar o registro" actionListener="#{funcionarioFrm.alterar}" image="ui-icon ui-icon-arrowrefresh-1-w" />  
                                    <f:verbatim> </f:verbatim>  
                                    <p:commandButton title="Deletar o registro" actionListener="#{funcionarioFrm.remover}" image="ui-icon-trash" onclick="if(!window.confirm('Confirma exclusão de registro?')){foco();return false;}" update="tabela,msgs"/>  
                                    <f:verbatim> </f:verbatim>  
                                </p:column>  
                                  
                                <p:column sortBy="#{item.funcionario.nome}" headerText="NOME" style="width:300px" >    
                                        <h:outputText value="#{item.funcionario.nome}" />  
                                </p:column>   
                                  
                                <p:column sortBy="#{item.funcionario.telefone}" headerText="TELEFONE" style="width:200px">    
                                        <h:outputText value="#{item.funcionario.telefone}" />  
                                </p:column>  
                                  
                                <p:column sortBy="#{item.funcionario.celular}" headerText="CELULAR" style="width:200px">    
                                        <h:outputText value="#{item.funcionario.celular}" />  
                                </p:column>  
                                  
                                <p:column sortBy="#{item.funcionario.cargo}" headerText="CARGO" style="width:100px">    
                                        <h:outputText value="#{item.funcionario.cargo == '1' ? 'GERENTE' : item.funcionario.cargo == '2' ? 'CHAPEIRO' : item.funcionario.cargo == '3' ? 'ATENDENTE' : ''}" />  
                                </p:column>  
                                  
                                <p:column sortBy="#{item.funcionario.usuario.login}" headerText="LOGIN" style="width:200px">    
                                    <h:outputText value="#{item.funcionario.usuario.login}" />  
                                </p:column>  
                                  
                            </p:dataTable>  
                        </div>  
                    </td>  
                </tr>  
            </table>  
            <!--  AREA DE MENSAGENS -->  
            <table width="100%">  
               <tr>  
                  <td>  
                     <fieldset>  
                          <h:panelGroup id="erros">  
                            <p:messages id="msgs" showDetail="true" globalOnly="true"/>   
                          </h:panelGroup>  
                     </fieldset>  
                  </td>  
               </tr>                          
           </table>  
        </p:panel>  
    </h:form>  
</h:body>  
</html> 

Tentei rodar seu código aqui , e notei alguns itens:

O que faz a função “foco()” que está sendo chamada no onClic… Confirm, se possível poste o código dela.

Aqui no teste q fiz independente de responder Sim ou Cancelar na confirmação de exclusão ele chamou o método
remover do managedBean. Porem eu não encontrei onde vc informa ao Managedbean qual registro vc está tentando excluir.

Quando vc diz que de fora do data table ele renderiza normal, como vc faz isso e mais uma vez como vc identifica o registro que será apagado?

Não sei se tem alguma coisa a ver, mas sempre utilizei o update com espaço e não vírgula: update=“tabela msgs” ao invés de update=“tabela,msgs”.
Outra coisa, inclua esta instrução no seu arquivo persistence.xml: NONE

Galera não consegui resolver ainda, alguem têm uma luz? =(

Vc está repopulando sua lista depois que você deleta o registro?

Esse é meu metodo de remoção, passo o objeto da coleção que quero remover, e removo ele, ele deleta no banco certinho, mas não renderiza minha tabela, a e tbm é excluido da lista corretamente. colecão é um ArrayList.

public void remover(){ IFuncionarioDAO item = (IFuncionarioDAO) getObjetoRequest("item"); Bean.copiarPropriedades(funcionario, item); try { funcionario.deletar(); colecao.remove(item); } catch (NegocioException e) { imprimirErrosPagina(e); } }

Pergunta boba: é este atributo “colecao” que alimenta seu grid?
Caso positivo, tente verificar o cache do navegador, da aplicação, a sessão, etc…

Exatamente esse objeto colecao que alimenta meu datatable, não tem erro com sessão não, pq o botão pesquisar de fora do datatable, renderiza o datatable normal quando precionado, eu não sei se é problema no componente <p:commandbutton>, ou falta eu colocar algum atriburo nele por ele estar dentro de um datatable, so sei que eu preciso de ajuda.

Vc já experimentou colocar ajax=“true” no commandButton?

Por default botoes <p:commandButton> são ajax=“true”

Pesquisei mais e descobri que os botões <p:commandButton> não dão refresh na página pq são ajax = “true” por default, dai é so colocar ajax = “false” que funciona. Obrigado pelos que ajudaram.