Olá, estou fazendo um tela de cadastro de usuários com primefaces.
Tenho uma panel de consulta, uma panel de cadastro e um dialog que abre para criar ou editar um usuário…
Na minha panel de consulta, tenho as seguintes informações
<p:panel id="painelConsulta" header="Lista de usuários"
style="text-align:left;width:98%;">
<p:dataTable value="#{usuarioControle.listaUsuario}" id="tabela"
emptyMessage="Nenhum registro encontrado" rowIndexVar="var"
paginator="true" paginatorPosition="bottom"
firstPageLinkLabel="Primeira" previousPageLinkLabel="Anterior"
nextPageLinkLabel="Proxima" lastPageLinkLabel="ultima" rows="7"
var="usuario" width="100%">
<p:column rendered="false">
<center>
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{usuario.cd_usuario}"
styleClass="letra1" />
</center>
</p:column>
<p:column style="width:30%">
<center>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{usuario.nm_usuario}"
styleClass="letra1" />
</center>
</p:column>
<p:column>
<center>
<f:facet name="header">
<h:outputText value="Email" />
</f:facet>
<h:outputText value="#{usuario.ds_email_usuario}"
styleClass="letra1">
</h:outputText>
<h:inputHidden value="#{usuario.ds_senha}" styleClass="letra1">
</h:inputHidden>
</center>
</p:column>
<p:column style="width:20px">
<center>
<p:commandButton action="#{usuarioControle.alterar}"
image="ui-icon-tag" title="Alterar"
oncomplete="cadastroDialog.show()"
update="usuarioForm:painelCadastro">
<f:setPropertyActionListener
target="#{usuarioControle.usuario}" value="#{usuario}" />
</p:commandButton>
</center>
</p:column>
<p:column style="width:20px">
<center>
<p:commandButton action="#{usuarioControle.excluir}"
image="ui-icon-trash" title="Excluir"
update="usuarioForm, messages">
<f:setPropertyActionListener
target="#{usuarioControle.usuarioExcluir}"
value="#{usuario}" />
</p:commandButton>
</center>
</p:column>
</p:dataTable>
</p:panel>
Quando clico no botão para alterar, eu abro o Dialog com as informações da classe Usuario. Segue dialog:
<p:dialog header="Cadastrar Usuario" widgetVar="cadastroDialog"
resizable="false" draggable="false" width="530" showEffect="fade"
hideEffect="fade" modal="true">
<p:panel id="painelCadastro" style="text-align:left;width:100%;">
<h:panelGrid id="painelGridCadastro" columns="1">
<h:panelGrid columns="1">
<h:outputText value="Nome:" />
<h:inputText value="#{usuarioControle.usuario.nm_usuario}"
size="70"></h:inputText>
<h:inputHidden value="#{usuarioControle.usuario.cd_usuario}"></h:inputHidden>
<h:inputHidden value="#{usuarioControle.usuario.ds_senha}"></h:inputHidden>
</h:panelGrid>
<h:panelGrid columns="1">
<h:outputText value="Senha:" />
<h:inputSecret id="senha"
value="#{usuarioControle.ds_senha_alterada}" size="70">
</h:inputSecret>
</h:panelGrid>
<h:panelGrid columns="1">
<h:outputText value="Email:" />
<h:inputText
value="#{usuarioControle.usuario.ds_email_usuario}" size="70">
</h:inputText>
</h:panelGrid>
</h:panelGrid>
<center>
<p:commandButton value="Gravar"
action="#{usuarioControle.gravar}"
oncomplete="cadastroDialog.hide()"
update="painelConsulta, painelCadastro, messages" />
<p:commandButton value="Limpar"
action="#{usuarioControle.limpar}"
update="painelCadastro, messages" />
</center>
</p:panel>
</p:dialog>
Altero os dados e clico no botão gravar.
O problema é que ao gravar, eu faço algumas validações e se eu retorno False, ou seja, algum problema na hora de salvar como duplicação de nome de usuário, ele não deveria fazer nada, nem no banco, nem na tela.
Mas o panel de consulta atualiza o usuario de acordo com as informações que o cliente digitou no dialog, mesmo que eu não tenha mudado no banco de dados.
Alguém sabe o que pode ser ou como solucionar?