Validar Campo Email e Campo Confirmar Email

957 views
Skip to first unread message

Ferran Gonzalez Alonso

unread,
Sep 13, 2013, 12:36:57 PM9/13/13
to jav...@googlegroups.com
Pessoal, estou utilizando JSF com Primefaces, tenho um formulário com dois campos, "Email:" e "Confirmar e-mail:", a ideia é que quando o usuário apertar o botão cadastrar, vai chamar a função salvar() para fazer o cadastro na base de dados, até aqui esta funcionando tudo beleza.

Só que, inclui um actionListener no botão, que chama a função validarEmail() e verifica se os dois campos contem o mesmo valor, vou deixar o código aqui:

FormularioInscricao.xhtml
<h:outputText value="E-mail: " for="email" />
<p:inputText id="email" label="Campo E-mail"
value="#{inscricaoBean.objParticipante.email}" required="true" />
<p:message for="email" display="icon" />

<h:outputText value="Confirmar e-mail: " for="emailConfirma" />
<p:inputText id="emailConfirma"
label="Campo de confirmação do E-mail"
value="#{inscricaoBean.objParticipante.emailConfirma}"
required="true" validator="validator.email"/>
<h:panelGroup>
<p:message for="emailConfirma" display="icon" />

<p:commandButton value="Cadastrar" action="#{inscricaoBean.salvar}"
actionListener="#{inscricaoBean.validarEmail}" update="grid" immediate="true"/>


InscricaoBean.java
public void validarEmail(){
if (objParticipante.getEmail().equals(objParticipante.getEmailConfirma())) {
FacesContext.getCurrentInstance().addMessage("frm:emailConfirma", 
new FacesMessage(FacesMessage.SEVERITY_ERROR,"Error email", "Error email"));  
}
}

Tentei fazer um validador, mas não consigo pegar o valor do campo Email para comparar, tenho entendido que validadores são feitos um para cada campo, então não sei como relaciona-los.

EmailValidator.java
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException{
if (value.equals("a")) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,"O email é diferente", "E-mail não confere");
throw new ValidatorException(msg);
}
}

Obrigado 


Ferran Gonzalez Alonso

unread,
Sep 13, 2013, 3:28:32 PM9/13/13
to jav...@googlegroups.com
Consegui gente!

Fiz o controle a traves do managed bean:
public boolean verificaEmail(){
String errorDiferenteEmail = "Digitou e-mails diferentes!";
if (!objParticipante.getEmail().equals(objParticipante.getEmailConfirma())) {
FacesContext.getCurrentInstance().addMessage("frm:emailConfirma", 
new FacesMessage(FacesMessage.SEVERITY_ERROR,errorDiferenteEmail, errorDiferenteEmail));
return false;
}
return true;
}
public String salvar() {
Session sessao = null;
Transaction transacao = null;
boolean verificaEmail = verificaEmail();
if(verificaEmail){
try {
sessao = HibernateUtil.getSessionFactory().openSession();
transacao = sessao.beginTransaction();
objParticipante.setEstado(objEstado.getUf());
objParticipante.setCidade(objCidades.getNome());
sessao.save(objParticipante);
objInscricao = objParticipante;
objMsg.addInfo();
transacao.commit();
} catch (HibernateException e) {
System.out
.println("Não foi possível inserir o participante. Erro: "
+ e);
} finally {
try {
sessao.close();
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de inserção. Mensagem: "
+ e.getMessage());
}
}
return "respostaFormulario?faces-redirect=true";
}
return "";
}

Stelio Correa

unread,
Sep 14, 2013, 9:52:52 AM9/14/13
to jav...@googlegroups.com
Boa tarde, amigo.

Tenta colocar validate no lugar do actionlistener.



Em sexta-feira, 13 de setembro de 2013 13h36min57s UTC-3, Ferran Gonzalez Alonso escreveu:

Maycom Oresto

unread,
Sep 13, 2013, 3:39:19 PM9/13/13
to jav...@googlegroups.com
Seria interessante usar a função onblur do ajax para chamar a validação, então não precisaria adicionar a validação no seu commandButton.


--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para javasf+un...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/javasf.
Para ver esta discussão na web, acesse https://groups.google.com/d/msgid/javasf/e7274981-6ec0-41e9-9399-5b8c9e24d9bc%40googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Vandson S. Lima

unread,
Sep 13, 2013, 2:42:42 PM9/13/13
to jav...@googlegroups.com
no seu caso eu faria diferente, eu deixaria só a action chamando o metodo salvar() e dentro do método salvar() eu chamaria o método validarEmail() colocando um "return;" caso o erro aconteça.

Vandson S. de Lima
(84) 8802-3314


Em 13 de setembro de 2013 13:36, Ferran Gonzalez Alonso <gafe...@gmail.com> escreveu:

ayslan

unread,
Sep 13, 2013, 1:22:03 PM9/13/13
to jav...@googlegroups.com
O omnifaces tem um validator para comparar se 2 campos são iguais, esse é o link do showcase:
http://showcase.omnifaces.org/validators/validateEqual


Em 13 de setembro de 2013 13:36, Ferran Gonzalez Alonso <gafe...@gmail.com> escreveu:

--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para javasf+un...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/javasf.
Para ver esta discussão na web, acesse https://groups.google.com/d/msgid/javasf/e7274981-6ec0-41e9-9399-5b8c9e24d9bc%40googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att,

Ayslan M. de Sousa

Rafael Carvalho

unread,
Sep 16, 2013, 7:03:48 AM9/16/13
to jav...@googlegroups.com
Cria um método de validação no bean:
 
private boolean validar(String email, String email2) {
//compara
// exibe a msg, pode passar o id do componente para que ele fique destacado também.
return true/false
}
 
public void salvar() {
if (!validar(email, email2) {
return;
}
 
//logica de salvar.
}
 
}

Ubi Petrus, ibi ecclesia; ubi ecclesia ibi Christus
 
Rafael Carvalho
 
Conselho Superior da Justiça do Trabalho
Coordenadoria Técnica do PJe
 
Tel: (61) 3043-7925 | (61) 9865-1444

Jonathan Rodrigues

unread,
Jan 13, 2015, 1:52:39 PM1/13/15
to jav...@googlegroups.com
Galera consegui fazer isso de forma bem simples com o omnifaces.
da uma olhada nos exemplos:

      <o:validateEqual id="equal" components="email confirmacaoEmail"   message="E-mail não confere!" showMessageFor="confirmacaoEmail" />

<h:outputLabel for="email" value="E-mail:"  style="font-weight:bold" />
<p:inputText id="email" label="E-mail"  value="#{usuarioBean.usuarioCadastro.email}" maxlength="60" size="30" required="true"></p:inputText>
<p:message for="email" />
        <h:outputLabel for="confirmacaoEmail" value="Confirmação de E-mail:" style="font-weight:bold" />
        <p:inputText id="confirmacaoEmail" label="Confirmação de E-mail"  value="#{usuarioBean.usuarioCadastro.confirmacaoEmail}" maxlength="60" size="30" required="true"></p:inputText>


Reply all
Reply to author
Forward
0 new messages