Pessoal, fiz um converter no intuito de transformar um cpf em um objeto e vice-versa.
No entanto, por algum motivo sobrenatural ele me retorna o id do objeto pra tela.
Já debuguei milhões de vezes e o retorno no converter está certinho.
Súplico a vcs uma luz, que o túnel já está acabando. Segue os códigos:
No xhtml:
<label style="margin-top: 10px;float: left;margin-right: 10px;">Nome Propritário:</label>
<h:selectOneMenu class="form-control" style="width: 200px;" value="#{imovelController.imovel.propietario}" required="true">
<f:selectItem itemLabel=""/>
<f:selectItems value="#{pessoaController.pessoas}" />
<f:converter converterId="PessoaConverter"/>
</h:selectOneMenu>
Meu converter:
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value.length() <= 11){
return new PessoaFisicaDao().buscarPorCPF(value);
}else{
return new PessoaJuridicaDao().buscarPorCNPJ(value);
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
Pessoa pessoa = (Pessoa) value;
if(pessoa instanceof PessoaFisica){
PessoaFisica pessoaFisica = (PessoaFisica) pessoa;
String cpf = pessoaFisica.getCpf();
return cpf;
}
if(pessoa instanceof PessoaJuridica){
PessoaJuridica pessoaJuridica = (PessoaJuridica) pessoa;
String cnpj = pessoaJuridica.getCnpj();
return cnpj;
}
return null;
}
Declaração no Faces-config.xml:
<converter>
<converter-id>PessoaConverter</converter-id>
<converter-class>conversor.PessoaConverter</converter-class>
</converter>
Se precisar de mais alguma coisa eu posto aqui, é só solicitar.