Olá Pessoal!
Estou aprendendo JSF e ao tentar utilizar o SelectOneMenu, tive apenas sucesso utilizando Strings como Argumentos para os Parâmetros do SelectItem
Fiz assim:
public class Filho {
private Long id;
private String nome;
private String telefone;
...
}
meu Bean:
private Class MeuBean{
private String filhoEscolhido;
public Collection<SelectItem> getListaFilhos(){
Collection<SelectItem> listaRetorno = new ArrayList<SelectItem>();
for(Filho filho: pai.getFilhos()){
SelectItem item = new SelectItem(filho.getNome(), filho.getNome());
listaRetorno.add(item);
}
return listaRetorno;
}
}
e no meu jsp:
<h:selectOneMenu value="#{meuBean.filhoEscolhido}">//filhoEscolhido é uma String
<f:selectItems value="#{meuBean.listaFilhos}"/>//Aqui, listaFilhos é uma Collection<SelectItem> com os selectItems criados utilizando a construtora new SelectItem("Nome Completo", "nome");
</h:selectOneMenu>
Do jeito acima funcionou, porém não é o que eu quero.
Eu queria fazer o seguinte:
trocar o tipo da referencia do objeto “filhoEscolhido” de String para o tipo “Filho”. Assim:
e trocar a forma com que eu instancio o SelectItem para a seguinte maneira:
Só que isso NÃO FUNCIONOU!
Gostaria de saber se há como fazer algo parecido com o código acima, ou seja:
1- O tipo do propriedade “value” da tag <h:selectOneMenu> só pode ser uma String? Gostaria que, nesse caso, fosse do tipo “Filho”.
2 - Quero escolher uma opção do combobox gerado, e automaticamente atribuir a opção escolhida a variável de referencia “filhoEscolhido” do tipo “Filho”.
Desde já agradeço!
Valeu!