Como usar Pojos no selectOneMenu do jsf (icefaces) ao inves de String/int?

2 respostas
F

Pessoal estou tentando criar uma comboBox usando o selectOneMenu do iceFaces. No caso seria uma combo de objetos que eu crio dentro de um array de selectItem:

pojos = new ArrayList<SelectItem>();
pojos.add(new SelectItem(new Pojo("a", 1),"a"));
...

Na tela:

<ice:selectOneMenu value="#{bean.pojo}">
    <f:selectItems value="#{bean.pojos}" />
</ice:selectOneMenu>

A variavel pojo era do tipo Pojo mesmo (Classe Pojo), mas sempre dava erro, ai troquei para Object e vi que é uma String que é setada. Além disto ocorre que o valor da String é nomeDaClasse+@+valorDoHash.
Até li que tem que sobreescrever hash e equals no meu Pojo, mas mesmo assim não entendo pq ele adiciona o hash, que PODE REPETIR e nunca chama o equals. Além disto, no final das contas eu queria um tipo Pojo
e não uma String… Até saquei que posso criar um converter, procurar na lista o pojo com aquele hash, mas além de não ser necessariamente apenas um, ficar criando converters me parece trabalho demais. Creio que tenha sim como fazer, apenas estou errando em algo.

Resumindo, gostaria de criar uma comboBox (selectOneMenu) de objetos e não de pares id/descrição, pois quero já recuperar o objeto selecionado no managedBean. Qual seria a forma mais simples?

Obrigado

2 Respostas

balrog

http://facestutorials.icefaces.org/tutorial/converter-tutorial.html#customeconverters

F

Então como eu disse, eu vi essa possibilidade do converter. Acontece que li na net, inclusive aqui no guj uns posts que me deu a entender que a pessoa não estava usando o converter. E tb não vejo qual a dificuldade, já que o SelectItem aceita um Object, ou seja aceita meu pojo. Como o faces ja tem a lista no contexto era muito facil p oferecer esse recurso, logo fico pensando se não tem mesmo…

Criado 4 de maio de 2010
Ultima resposta 4 de mai. de 2010
Respostas 2
Participantes 2