Olá, tenho um .xhtml que possui um p:dataTable um dialog que servem para incluir e atualizar os dados de minha p:dataTable e um confirmdialog que seria para remover seus registros.
Com os dialog de incluir/alterar, tudo funciona direitinho, o problema está quando eu vou excluir. Acontece que o p:confirmDialog realmente chama o método do meu bean, porém não atualiza os dados do p:datatable.
Comparando os dois dialogs, não consigo ver a diferença que causa tal comportamente diferente.
Seguem trechos do código:
Datatable(que contem os commandButtom que chamam os dialogs de alterar e exluir):
<h:form id="form">
<p:dataTable value="#{usuarioBean.usuarios}" var="usuario"
paginator="true" rows="10"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="5,10,15" id="usuarioTable"
emptyMessage="Registro não encontrado">
<p:column headerText="Nome"
sortBy="#{usuario.pessoaFisica.noPessoa}"
filterBy="#{usuario.pessoaFisica.noPessoa}"
filterMatchMode="contains">
<h:outputText value="#{usuario.pessoaFisica.noPessoa}" />
</p:column>
<p:column headerText="Matricula"
sortBy="#{usuario.pessoaFisica.nrMatricula}"
filterBy="#{usuario.pessoaFisica.nrMatricula}">
<h:outputText value="#{usuario.pessoaFisica.nrMatricula}" />
</p:column>
<p:column headerText="Email"
sortBy="#{usuario.pessoaFisica.dsEmail}"
filterBy="#{usuario.pessoaFisica.dsEmail}">
<h:outputText value="#{usuario.pessoaFisica.dsEmail}" />
</p:column>
<p:column headerText="Cargo" sortBy="#{usuario.noCargo}"
filterBy="#{usuario.noCargo}" filterMatchMode="contains">
<h:outputText value="#{usuario.noCargo}" />
</p:column>
<p:column headerText="Orgão" sortBy="#{usuario.orgao.noOrgao}"
filterBy="#{usuario.orgao.noOrgao}" filterMatchMode="contains">
<h:outputText value="#{usuario.orgao.noOrgao}" />
</p:column>
<p:column style="width:52px;text-align: center">
<p:commandButton update="formDetalheUsuario:detalheUsuario"
oncomplete="PF('usuarioDialog').show()" icon="fa fa-search-plus"
title="Visualisar">
<f:setPropertyActionListener value="#{usuario}"
target="#{usuarioBean.usuario}" />
</p:commandButton>
</p:column>
<p:column style="width:52px;text-align: center">
<p:commandButton update="formManterUsuario:manterUsuario"
oncomplete="PF('manterDialog').show()" icon="fa fa-edit"
title="Editar">
<f:setPropertyActionListener value="#{usuario}"
target="#{usuarioBean.usuario}" />
</p:commandButton>
</p:column>
<p:column style="width:52px;text-align: center">
<p:commandButton
update="formVisualizarPerfisUsuario:visualizarPerfil"
action="#{usuarioBean.perfisAssociados}"
oncomplete="PF('perfisDialog').show()" icon="fa fa-tag"
title="Editar Perfis Vinculados">
<f:setPropertyActionListener value="#{usuario}"
target="#{usuarioBean.usuario}" />
</p:commandButton>
</p:column>
<p:column style="width:52px;text-align: center">
<p:commandButton onclick="PF('confirmation').show()"
icon="fa fa-trash" title="Remover Usuario">
<f:setPropertyActionListener value="#{usuario}"
target="#{usuarioBean.usuario}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
- Dialog que funciona e adiciona/altera o usuario e depois atualiza o datatable:
<h:form id="formManterUsuario">
<p:dialog header="Usuário" widgetVar="manterDialog" modal="true"
showEffect="fade" hideEffect="fade" resizable="false">
<p:outputPanel id="manterUsuario" style="text-align:center;">
<p:panelGrid columns="3"
rendered="#{not empty usuarioBean.usuario}"
columnClasses="label,value">
<p:outputLabel value="Nome:" for="nome" />
<p:inputText value="#{usuarioBean.usuario.pessoaFisica.noPessoa}"
id="nome" required="true"
requiredMessage="O campo Nome é obrigatório." />
<p:message for="nome" />
<p:outputLabel value="CPF:" for="cpf" />
<p:inputMask id="cpf" mask="999.999.999-99"
value="#{usuarioBean.usuario.pessoaFisica.nrCpf}"
converter="cpfCnpjConverter" required="true"
requiredMessage="O campo CPF é obrigatório."
validator="CPFValidator" />
<p:message for="cpf" />
<p:outputLabel value="Email:" for="email" />
<p:inputText value="#{usuarioBean.usuario.pessoaFisica.dsEmail}"
id="email" required="true"
requiredMessage="O campo Email é obrigatório."
validator="EmailValidator" />
<p:message for="email" />
<p:outputLabel value="Matricula:" for="matricula" />
<p:inputText id="matricula"
value="#{usuarioBean.usuario.pessoaFisica.nrMatricula}"
required="true"
requiredMessage="O campo Matricula é obrigatório." />
<p:message for="matricula" />
<p:outputLabel value="Cargo:" for="cargo" />
<p:inputText id="cargo" value="#{usuarioBean.usuario.noCargo}"
required="true" requiredMessage="O campo Cargo é obrigatório." />
<p:message for="cargo" />
<p:outputLabel value="Login" for="login" />
<p:inputText id="login" value="#{usuarioBean.usuario.noLogin}"
required="true" requiredMessage="O campo Login é obrigatório." />
<p:message for="login" />
<p:outputLabel value="Orgao" for="orgao" />
<p:selectOneMenu value="#{usuarioBean.usuario.orgao.idOrgao}"
id="orgao" required="true"
requiredMessage="O campo Orgao é obrigatório.">
<f:selectItems value="#{usuarioBean.orgaos}" var="orgao"
itemLabel="#{orgao.noOrgao}" itemValue="#{orgao.idOrgao}" />
</p:selectOneMenu>
<p:message for="orgao" />
<p:outputLabel for="isAtivo" value="Ativo:" />
<p:selectOneRadio id="isAtivo"
value="#{usuarioBean.usuario.isAtivo}">
<f:selectItem itemLabel="Sim" itemValue="true" />
<f:selectItem itemLabel="Não" itemValue="false" />
</p:selectOneRadio>
<p:message for="isAtivo" />
<p:outputLabel for="isAdmin" value="Administrador:" />
<p:selectOneRadio id="isAdmin"
value="#{usuarioBean.usuario.isAdmin}">
<f:selectItem itemLabel="Sim" itemValue="true" />
<f:selectItem itemLabel="Não" itemValue="false" />
</p:selectOneRadio>
<p:message for="isAdmin" />
<h:inputHidden value="#{usuarioBean.usuario.idUsuario}" />
<p:commandButton
value="#{usuarioBean.usuario.idUsuario != 0 ? 'Alterar' : 'Incluir'}"
id="alterarUsuario" action="#{usuarioBean.salvar}"
icon="fa fa-save" process="@form"
update="manterUsuario form:usuarioTable" />
</p:panelGrid>
</p:outputPanel>
</p:dialog>
</h:form>
- Aqui está o problema: confirmDialog que não atualiza o datatable
<p:confirmDialog message="Deseja excluir o resgistro?" showEffect="fade" hideEffect="fade" header="Excluir Usuário" severity="alert" widgetVar="confirmation"> <h:form id="formExcluir"> <p:commandButton value="Sim" action="#{usuarioBean.remover}" immediate="true" oncomplete="PF('confirmation').hide()" process="@form" update=":form:usuarioTable" /> <p:commandButton value="Não" onclick="PF('confirmation').hide()" type="button" /> </h:form> </p:confirmDialog>
Alguma ideia do que possa ser?