JSF – Validação de CPF com máscara

Neste post irei ensinar como validar CPF com Stella. O post ensinará como fazer validações de CPFs, além de CPFs Stella tem suporte a formatadores e conversores para documentos brasileiros, tais como CPF, CNPJ e PIS/PASEP; além de um gerador de boletos bancários.

Pra facilitar a vida do desenvolvedor brasileiro o pessoal da Caelum criou essa biblioteca simplificando assim a validação de documentos em aplicações JSF.

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

Requisitos

  1. Baixar aqui os jars;
  2. Descompactar os jars caelum-stella-core-1.2.jar e caelum-stella-faces-1.2 na pasta WebContent/WEB-INF/lib da aplicação;
  3. O RichFaces deve estar instalado na aplicação; Clique aqui para aprender a instalar o RichFaces
  4. O arquivo jquery.maskedinput-1.2.1.js deve estar presente na aplicação. Baixe aqui o arquivo

Estrutura do projeto

projeto

Códigos

pessoa.java:

package br.com.serjaum.entidades;

public class Pessoa {

 private String nome; 

 private String email;

 private String cpf; 

 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;
 }

 public String getCpf() {
     return cpf;
 }

 public void setCpf(String cpf) {
     this.cpf = cpf;
 }

}

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;
 } 

}

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">

 <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"%>
<%@ taglib prefix="stella" uri="http://stella.caelum.com.br/faces"%>
<%@ taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich"%>

<!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 CPF</title>

 <script type="text/javascript" src="/jsf/resources/jquery.maskedinput-1.2.1.js"></script>

</head>

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

 <h:messages/>

 <h:panelGrid columns="2">
     <h:outputLabel for="cpf" value="CPF com máscara: "  />
     <h:inputText id="cpf" value="#{pessoaMB.pessoa.cpf}" size="15">
         <stella:validateCPF formatted="true"/>
         <rich:jQuery selector="#cpf" query="mask('999.999.999-99')" timing="onload"/>
     </h:inputText>
  </h:panelGrid>

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

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

Considerações

A diretiva <%@ taglib prefix=”rich” uri=”http://richfaces.ajax4jsf.org/rich”%> deve ser adicionada no código para que o componente <rich:jQuery> possa ser utilizado na aplicação.

A diretiva <%@ taglib prefix=”stella” uri=”http://stella.caelum.com.br/faces”%&gt; deve ser adicionada no código para que os validadores/conversores/formatadores da biblioteca Stella possam ser utilizados na aplicação.

A linha <script type=”text/javascript” src=”/jsf/resources/jquery.maskedinput-1.2.1.js”></script> deve estar dentro da tag head para que o arquivo de máscaras seja carregado.

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 CPF  digitado for invalído.

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

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

  •  <stella:validateCPF formatted="true"/>

… invoca o nosso validador de CPF para o campo cpf formatado.

  • <rich:jQuery selector="#cpf" query="mask('999.999.999-99')" timing="onload"/>

… adiciona máscara ao campo.

Resultado

cpf

Download do projeto

Baixe o projeto completo aqui.

Espero ter ajudado!


5 Comentários on “JSF – Validação de CPF com máscara”

  1. Excelente post. Que bom que o Caelum Stella foi útil!

  2. Luciano disse:

    Não estou conseguindo validar meu CPF, as mascaras estão todas certas, mas não valida o CPF

  3. Vinicius disse:

    Muito bom Serjaum!
    Temos que incentivar produto brasileiro.

  4. Kleber Cardoso disse:

    Olá Sergio, boa noite.
    Estou tendo problemas em utilizar a validação de CPF com base no modelo que você passou. No meu caso, não importa o cpf que eu coloque, ele me dá a mensagem: “cpferror : invalid format”

    Será que pode ajudar nisso??
    Valeu man.

  5. Eduardo disse:

    Esse validador é muito ruim. Se vc colocar os caracteres iguais tipo 111.111.111-11 ele passa. Muito fraco.


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