[quote=Flavio Almeida]Hoje eu estou bem atarefado, mas responderei com mais calma à noite.
Faça assim:
itens.add(new SelectItem(null, “”)); // string em branco no lugar de “Selecione”
Perfil tem a anotação @Id ou @EmbeddableId?
Estamos usando este converter em produção sem problemas, mas estou interessado em ajudar você a resolver seu problema.[/quote]
O Perfil tem a anotação @Id.
Colocar uma string em branco só vai remover o “Selecione” do combo, mas o erro vai continuar.
Vou continuar debugando aqui, acho que deixei escapar algo rs.
[quote=Lucas Sorrentino]cara, esse erro acontece quando você seleciona qualquer item da combo?
A combo renderiza direitinho, com todos os itens?[/quote]
Então Lucas, ele renderiza normal, com todos os itens e o erro acontece com qualquer item selecionado.
Vou fazer um teste aqui, acho que o problema é no meu combo, to fazendo algo errado… assim que testar ja posto algo.
É sim Lucas, é uma lista de select item, gero ela assim:
List<SelectItem> itens = new ArrayList<SelectItem>();
itens.add(new SelectItem(null, "Selecione"));
for (Perfil perfil : perfis)
{
itens.add(new SelectItem(perfil, perfil.getDescricao()));
}
return itens;
Esse combo não é required, mas resolvi deixa-lo para ver o que acontece. Mesmo que você selecione um item ele não entende que foi selecionado, exibe uma mensagem que o campo perfil é obrigatório, como se o meu equals não tivesse sido implementado, mas foi.
Enfim, já achei o erro mas não sei como solucionar, pois aparentemente está correto.
Tenho uma outra aplicação com um combo, mas que possui um converter especifico que funciona perfeitamente.
Refiz o combo baseado neste que funciona, exceto o converter pois quero utilizar o generico e mesmo assim é como se não tivesse selecionado nada no combo.
Fui claro?
Só percebi isso pois tentei utilizar o combo como required.
Esquece o que falei no ultimo post, to viajando aqui…rs
Ele não reconhece que o combo foi preenchido pq o converter só retorna null no método getAsObject() rs.
A ideia do converter é colocar o objeto num map e depois recuperar pela chave que é o id, certo ?
Quando vou recupar o map está vazio:
// só retorna null
component.getAttributes().get(value);
Sei lá, vou recomeçar esse combo do zero, refazer tudo pra ver se não to fazendo besteira rs.
Lucas e Flavio, fiz um projetinho do zero aqui e o converter funcionou perfeitamente.
Como suspeitava o problema é no meu código, vou ver o que consigo e posto aqui.
Meus Parabéns pela solução, pelo visto tivemos pesquisando nos mesmos lugares. rsrs (http://www.rponte.com.br)
Eu estava muito desapontado em ter que fazer um converter para cada entidade do meu modelo.
A priori, está funcionando bem. vou continuar os testes, porém não estou usando a versão com reflex, para evitar o uso de mais uma biblioteca.
O que acha ?
No que for possível te darei feedback.
Forte abraço. Continue assim, a nosso comunidade é forte por isso.
Não vejo problema algum. Eu prefiro a versão da biblioteca, porque deixa o código mais claro. Se não estou enganado, há um sistema nosso rodando a versão sem a biblioteca de reflexão há um bom tempo sem ter problema.
O feedback é muito importante, acredite, ainda mais que utilizamos essa classe em ambiente de produção.
[quote=Flavio Almeida]O desempenho está muito bom.
Coloquei mais um sistema nosso utilizando esta classe. Para os managedBeans em escopo de visão, o desempenho é melhor ainda.
[/quote]
Flavio preciso da tua ajuda,
estou com um problema relacionado a atualização do selectOneMenu mesmo depois que atualizo o campo do meu managedBean, estou usando seu converter.
Parabens Flavio Almeida esse conversor é muito bom mesmo,
mas eu to com um probleminha aqui talvez vc conheça uma solução.
Estou usando esse conversor dentro um componente composto, por causa disso ou sei la o que, no metodo
ele está me retornando null, não sei se é porque esta trocando o facesContext ou coisa parecida.
Mas aí a duvida tem como eu consertar isso ou passar a classe que eu desejo para o conversor?
Obrigado.
wanderman, hoje estou muito atarefado, talvez não consigo acompanhar o post.
Coloque o código da sua página + faces-config para que eu possa dar uma olhada.
Para que o código funcione, sua classe tem que estender SelectOneMenu do JSF. Por exemplo, no RF 3.X, o rich:combobox não estende SelectOneMenu, desta forma, impossibilitando o uso deste converter.
Então com o autocomplete do primefaces ele funciona certinho se eu estiver utilizando-o na propria pagina, o problema ocorre somente quando eu utilizo-o dentro de um componente composto, não cheguei a testar mas creio q se eu criar um componente composto utilizando o SelectOneMenu ele pode gerar o mesmo problema, mas vou tentar aqui depois te falo.
Valeu