JSF + brazilutils - Erro "Conversion Error setting value '00000000000' for 'null Converter'."

ola pessoal
procurando algumas coisas na net e acabei encontrando essa biblioteca so brasilutils e comecei a usar.
porem, tive um probleminha agora a pouco.

quando submeto o formulario, ele me gera o seguinte erro

Conversion Error setting value '00000000000' for 'null Converter'.

sei que tenho que converter, porem, como eu faria isso?
tentei criar um metodo GET que aceite String, porem, nao deu muito certo

vejam meu Pessoa

package br.com.krusst.precadastro.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.brazilutils.br.cpfcnpj.CpfCnpj;

public class Pessoa  implements Serializable {

	private int id;
    private String nome = "";
	private CpfCnpj documento = new CpfCnpj();
    private Date nascimento;
    private Logradouro logradouro = new Logradouro();
    //private List<Telefone> telefones = new ArrayList<Telefone>();
    //private List<Email> emails = new ArrayList<Email>();
    private Telefone telefone1 = new Telefone();
    private Telefone telefone2 = new Telefone();
    private Email email1 = new Email();
    private Email email2 = new Email();
    private Recadastro recadastro = new Recadastro();
    private Status status;

	public Pessoa() {
	}

	public int getId() {
		return id;
	}

	public String getNome() {
		return nome;
	}

	public CpfCnpj getDocumento() {
		return documento;
	}

	public Date getNascimento() {
		return nascimento;
	}

	public Status getStatus() {
		if (status == null){
			status = status.INICIO;
		}
		return status;
	}

	public void setId(int id) {
		this.id = id;
	}

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

	public void setDocumento(CpfCnpj documento) {
		this.documento = documento;
	}
	
	public void setDocumento(String documento) {
		this.documento = new CpfCnpj(documento);
	}	

	public void setNascimento(Date nascimento) {
		this.nascimento = nascimento;
	}

	public void setStatus(Status status) {
		this.status = status;
	}

	public Logradouro getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(Logradouro logradouro) {
		this.logradouro = logradouro;
	}

	public Telefone getTelefone1() {
		return telefone1;
	}

	public Telefone getTelefone2() {
		return telefone2;
	}

	public Email getEmail1() {
		return email1;
	}

	public Email getEmail2() {
		return email2;
	}

	public void setTelefone1(Telefone telefone1) {
		this.telefone1 = telefone1;
	}

	public void setTelefone2(Telefone telefone2) {
		this.telefone2 = telefone2;
	}

	
	public void setEmail1(Email email1) {
		this.email1 = email1;
	}

	public void setEmail2(Email email2) {
		this.email2 = email2;
	}

	
	public Recadastro getRecadastro() {
		return recadastro;
	}

	public void setRecadastro(Recadastro recadastro) {
		this.recadastro = recadastro;
	}

	public void setPessoaLimpa(){
		this.setId(0);
		this.setNome("");
		this.setDocumento("");
		this.setNascimento(null);
		this.getLogradouro().setLimpa();
		this.setTelefone1(null);
		this.setTelefone2(null);
		this.setEmail1(null);
		this.setEmail2(null);
		this.setStatus(Status.INICIO);
	}

}

e no meu beam

...
	public String acaoCadastrar(){
		try {
			RetornoProcedure retornoProcedure = new RetornoProcedure();
			this.pessoaFisicaDB.insert(this.pessoaFisica,retornoProcedure);
			this.logradouroDB.insert(pessoaFisica.getId(),this.pessoaFisica.getLogradouro(),retornoProcedure);

			this.telefoneDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getTelefone1(),retornoProcedure);
			this.telefoneDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getTelefone2(),retornoProcedure);			

			this.emailDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getEmail1(),retornoProcedure);
			this.emailDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getEmail2(),retornoProcedure);			
	
		} catch (KrusstException e) {
			e.printStackTrace();
		}
		FacesUtils.addInfoMessage("Cadastro de Pessoa realizado com sucesso, código do cadastro: " + this.pessoaFisica.getId());		
		this.pessoaFisica.setPessoaFisicaLimpa();
		//this.pessoaFisica = null;
		return "cadastrar";
	}
...

minha pagina

...
<h:inputText value="#{pessoaFisicaMB.pessoaFisica.documento}" disabled="#{pessoaFisicaMB.estadoAtual.id==3}" id="documento" maxlength="20" size="21" required="true" styleClass="FormCampo" label="CPF/CNPJ: "></h:inputText>
...
<a4j:commandButton value="Cadatrar" 	id="botaoCadastrar" 	action="#{pessoaFisicaMB.acaoCadastrar}">							</a4j:commandButton>
...

como eu faco essa conversar?

e alguem aqui usa o brasilutils?
o que achou dela?

abs
T+

Eu uso o BrazilUtils eu criei uma classe que implementa o Validator do JSF e uso nas paginas passando o id por parametro no <f:validator>.

mas o erro que estou recebendo nao é um erro de conversao?

sou mais do que leigo, poderia dar um exemplo?

obrigado

abs
T+

Cara aqui tem como criar e usar validadores personalizados.

http://www.oracle.com/webapps/online-help/jdeveloper/10.1.3/state/content/navId.4/navSetId._/vtTopicFile.jsf_apps|eventvalidate|sf_avc_customvalidators~html/

E aqui o validator que criei.

import java.io.Serializable;

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;

import org.brazilutils.br.cpfcnpj.Cnpj;
import org.brazilutils.br.cpfcnpj.Cpf;
import org.brazilutils.br.cpfcnpj.CpfCnpj;
import org.brazilutils.validation.ValidationException;

public class CpfCnpjValidator implements Validator, Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -1007365073266423131L;

	private CpfCnpj cpfCnpj;

	public CpfCnpjValidator() {
		cpfCnpj = new CpfCnpj();
	}

	public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
			throws ValidatorException {
		if (isCnpj(arg2)) {
			if (!isCnpjValid()) {
				FacesMessage msg = new FacesMessage("CNPJ em formato invalido");
				msg.setSeverity(FacesMessage.SEVERITY_FATAL);
				throw new ValidatorException(msg);
			}
		} else if (!isCpfValid()) {
			FacesMessage msg = new FacesMessage("CNPJ em formato invalido");
			msg.setSeverity(FacesMessage.SEVERITY_FATAL);
			throw new ValidatorException(msg);
		}
	}

	private boolean isCpfValid() {
		Cpf cpf = null;
		try {
			cpf = new Cpf(cpfCnpj.getCpfCnpj());
		} catch (ValidationException ve) {
			return false;
		}
		if (!cpf.isValid())
			return false;
		return true;
	}

	private boolean isCnpjValid() {
		Cnpj cnpj = null;
		try {
			cnpj = new Cnpj(cpfCnpj.getCpfCnpj());
		} catch (ValidationException ve) {
			return false;
		}
		if (!cnpj.isValid())
			return false;
		return true;
	}

	private boolean isCnpj(Object ui) {
		String cpfOrCnpj = (String) ui;
		try {
			cpfCnpj.setCpfCnpj(cpfOrCnpj);
			if (cpfCnpj.isValid())
				return cpfCnpj.isCnpj();
			else
				return false;
		} catch (Exception e) {
			return false;
		}
	}

}

Ameba
valeu, vou dar uma estudada

uma curiosidade, meio OFF

na parte

[code] private CpfCnpj cpfCnpj;

 public CpfCnpjValidator() {  
     cpfCnpj = new CpfCnpj();  
 }  [/code]

vc cria os os objetos de uma forma “diferente”
pelo menos, eu tinha visto apenas desta forma

private CpfCnpj cpfCnpj = new CpfCnpj();

agora vem a pergunta besta
tem diferença na forma de criar eles ou tanto faz os 2 metodos?
se sim, qual a diferença

abs
obrigado
T+

[quote=Krusst]Ameba
valeu, vou dar uma estudada

uma curiosidade, meio OFF

na parte

[code] private CpfCnpj cpfCnpj;

 public CpfCnpjValidator() {  
     cpfCnpj = new CpfCnpj();  
 }  [/code]

vc cria os os objetos de uma forma “diferente”
pelo menos, eu tinha visto apenas desta forma

private CpfCnpj cpfCnpj = new CpfCnpj();

agora vem a pergunta besta
tem diferença na forma de criar eles ou tanto faz os 2 metodos?
se sim, qual a diferença

abs
obrigado
T+
[/quote]

Até onde sei não há diferenças pois em ambos os casos serão executados quando houver uma nova instancia da classe (Excessão a estáticos é claro)

Mas eu acho mais fáçil trabalhar no construtor, assim podemos passar argumentos para usarmos nos construtores dos campos.