JSF – Validação de e-mail

Neste post irei ensinar como criar um validador para chegar se um determinado e-mail é válido. O projeto poderá ser baixado na íntegra no final do post.

Estrutura do projeto

O projeto deverá conter a seguinte estrutura: emailValidatorJsf

Versões utilizadas

  • Eclipse 3.4.1
  • JDK 1.6
  • Tomcat 6.0.18
  • MyFaces 1.2.5
  • RichFaces 3.3.1
  • Caelum Stella 1.2

Códigos

Pessoa.java:

package br.com.serjaum.entidades;

public class Pessoa {

 private String nome; 

 private String email;

 public String getNome() {
     return nome;
 }

 public void setNome(String nome) {
     this.nome = nome;
 }

 public String getEmail() {
     return email;
 }

 public void setEmail(String email) {
     this.email = email;
 }

}

PessoaMB.java:

package br.com.serjaum.mb;

import br.com.serjaum.entidades.Pessoa;

public class PessoaMB {
 private Pessoa pessoa = new Pessoa();

 public String teste(){
     return null;
 }

 public Pessoa getPessoa() {
     return pessoa;
 }

 public void setPessoa(Pessoa pessoa) {
     this.pessoa = pessoa;
 } 

}

EmailValidator.java

package br.com.serjaum.validador;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

public class EmailValidator implements Validator{

public void validate(FacesContext facesContext, UIComponent uIComponent, Object object) throws ValidatorException {

    String enteredEmail = (String)object;
    Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
    Matcher m = p.matcher(enteredEmail);

    boolean matchFound = m.matches();

    if (!matchFound) {
        FacesMessage message = new FacesMessage();
        message.setDetail("E-mail incorreto!");
        message.setSummary("E-mail incorreto!");
        message.setSeverity(FacesMessage.SEVERITY_ERROR);
        throw new ValidatorException(message);
    }
  }
}

faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
 version="1.2">

 <validator>
     <validator-id>validadorEmail</validator-id>
     <validator-class>br.com.serjaum.validador.EmailValidator</validator-class>
 </validator>

 <managed-bean>
     <managed-bean-name>pessoaMB</managed-bean-name>
     <managed-bean-class>br.com.serjaum.mb.PessoaMB</managed-bean-class>
     <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>

</faces-config>

pagina.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Validando e-mail</title>
</head>

<body>
<f:view>
 <h:form>

     <h:messages/>

     <h:panelGrid columns="2">
         <h:outputLabel for="nome" value="Nome "  />
         <h:inputText id="nome" value="" size="50" />

         <h:outputLabel for="email" value="E-mail "  />
         <h:inputText id="email" value="#{pessoaMB.pessoa.email}" size="60">
             <f:validator validatorId="validadorEmail"/>
         </h:inputText>
     </h:panelGrid>

 <h:commandButton value="Testar" action="#{pessoaMB.teste}"/>

 </h:form>
</f:view>
</body>
</html>

Explicando o código

O código relevante está no arquivo pagina.jsp:

  • <h:messages/>

… é o componente que mostrará a mensagem para o usuário caso o e-mail digitado for invalído.

  • <h:inputText id="email" value="#{pessoaMB.pessoa.email}" size="60">

… é o campo de texto que fará a vinculação com o atributo do email do nosso pessoaMB.

  • <f:validator validatorId="validadorEmail"/>

… invoca o nosso validador de e-mail para o campo email.

Resultado

resultadoEmailValidator

Download do projeto

Baixe o projeto completo aqui.


7 Comentários on “JSF – Validação de e-mail”

  1. Alana disse:

    Legal o blog😉

    Você poderia indicar uma boa apostila ou algo do gênero sobre JSF para iniciantes?

    ;**

  2. Francisco disse:

    Obrigado pelo tutorial!

  3. willian zancanelli disse:

    cara… eu tentei usar ele n reconhece essa linha
    String enteredEmail = (String) object;
    o object ele n reconhece… o q vc acha q pode ser?

  4. willian zancanelli disse:

    na verdade cara… ve se vc consegue me da 1 ajuda…. o problema é o seguinte… ele valida normalmente… porem quando eu vou em alterar….e mando ele alterar…… ele da como email invalido “dei 1 system ” e mostro normalmente… ta carregado a classe… si eu apagar e digitar a mesma coisa “email valido” ele grava normalmente

    sabe o q possa ser?

  5. Marcio Melo disse:

    Valeu pela dica meu caro.

    Não peguei o código completo, so a classe e como utilizar, serviu muito, bom validador.

    Abraço

  6. willian zancanelli disse:

    eu dei uma melhorada no codigo em 2 linhas, mas sao de grande ajuda

    Pattern pattern = Pattern.compile(“^[\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+[a-zA-Z]{2,7}$”);
    Matcher matcher = pattern.matcher(valorEmail.toLowerCase());

    o pattern.matcher(valorEmail.toLowerCase()); serve para verificar sempre o email de uma forma padrao, por isso gera o erro pra quem insere como touppercase
    assim ele verifica perfeitamente o email!


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s