Verificar se Email foi alterado na página de alteração de Usuario

3 respostas
J

Pessoal, estou com uma dúvida na qual tenho um dataTable onde estão os usuários cadastrados no banco.
Ao clicar no botão “Alterar”, aparece um <p:dialog> com as informações do usuário que eu escolhi.

Uma das informações que eu posso alterar é o email do usuário. Para alterar esse email, devo verificar se o novo email já é existente no banco de dados. Até nessa parte está tranquilo.

O negócio é que mesmo se eu não alterar o email, ele chama esta função que verifica se o email é existente ou não, ou seja, ele não vai aceitar alterar o usuário, pois realmente o email é existente (É do próprio usuario selecionado)

Queria saber se tem como eu verificar se determinado campo manteve seu valor original após o submit. Colocarei os códigos que estou tentando fazer isso funcionar.

<h:form prependId="false">
	
	  <p:dataTable id="tabelaUsuario" var="usuario" value="#{usuarioBean.listaUsuario}" style="font-size: 12px;"
	  paginator="true" rows="10" >
	  
	  <f:facet name="header">
	  	<h:outputText value="Alterar Usuários"/>
	  </f:facet>
	  
		//Demais códigos omitidos

		<p:column>
			<f:facet name="header">
				<h:outputText value="E-mail"/>
			</f:facet>
			<h:outputText value="#{usuario.email}"/> 
		</p:column>
		
		<p:column style="text-align:center;">
			<f:facet name="header">
				<h:outputText value="Alterar"/>
			</f:facet>
			<p:commandLink actionListener="#{usuarioBean.preparaAlterarUsuario}" update="infoUsuario" oncomplete="dialogUsuario.show()">
				<h:graphicImage library="imagens/icones" name="alterar.png"/>
			</p:commandLink>			
		</p:column>
		
		
	</p:dataTable>


	<!-- POP-UP ONDE O USUÁRIO DIGITARÁ OS DADOS PARA ALTERAÇÃO -->
	<p:dialog header="Gerencia Usuario" widgetVar="dialogUsuario" resizable="true" modal="false" 
	position="center" width="500" id="alter">
	<h:messages/>
		<h:form prependId="false" id="frmAlterar">
		
		//Demais campos omitidos
	    	
	    	<h:outputText for="usuarioEmail" value="E-mail:" />
	    	<p:inputText value="#{usuarioBean.usuario.email}" id="usuarioEmail" />
		
			
	    	
			<p:commandButton  actionListener="#{usuarioBean.alterarUsuario}" value="Alterar" update="messages" 
			process="@form"/>
		
		</h:panelGrid>

Bean

private Usuario usuario;

public void preparaAlterarUsuario(ActionEvent event)
	{
                //Pega o usuário da linha do dataTable
		usuario = (Usuario)(this.listaUsuario.getRowData());
		
}



public void alterarUsuario(ActionEvent event){
		try{
		
		
		//Chama o método para validações
	logic.alterarUsuario(usuario);
//ETC
}

Validações

public void alterarUsuario(Usuario usuario)
boolean emailExistente=false;
		 
		 //Caso o email digitado seja diferente do email inicial do dataTable, é verificado
		 //Se o novo email digitado consta no banco. Caso consta, o usuário não é alterado
		 if(usuario.getEmail Foi Alterado na página xhtml){
			 emailExistente = verificarEmail(usuario);
		 }
//Omitidos demais validações

Já fiz alguns teste sem sucesso tanto o Bean como Request ou como Session;

Obrigado.

3 Respostas

L

eu se fosse vc naum verificaria se o e-mail existe, pois dará muito trabalho, opinião.

J

Porém eu tenho que “garantir” que não será cadastrado emails iguais, por isso a necessidade de fazer isso.

O único ponto que tenho dúvida é: como verificar se lá na página xhtml foi alterado o valor do inputText.

L

axo q terá q trabalhar com ajax entaum, tenho um componente assim:<p:ajax event=“blur” update=“aluno-idade” listener="#{alunoBean.setarIdade}" /> dentro dum <p:inpuText/> qdo sai dele jah atualiza o próximo evento, v se ajuda.

Criado 25 de outubro de 2011
Ultima resposta 26 de out. de 2011
Respostas 3
Participantes 2