tenho um selectOneMenu que carrega uma lista do BD, debugando consigo ve que todos os passos estão correto exceto a hora que mostra o valor no SelectOneMenu. Na página aparece o nome do objeto “JanelaPortabilidade@7437” e não a String que gostaria.
Meus códigos:
Bean:
[code]
public List listarHoraJanela(DateSelectEvent event) {
dataF = event.getDate();
Calendar dataAux = new GregorianCalendar();
dataAux.setTime(dataF);
//Corrigir
if (listaHoraJanela == null) {
listaHoraJanela = new ArrayList<JanelaEAPortabilidade>();
listaHoraJanela = consultaJPortabilidade.listarHoraJanela(dataAux);
listSelectHoraJ.add(new SelectItem("", ""));
for (JanelaEAPortabilidade horaJ : listaHoraJanela) {
String dataFormat = String.format("%02d",horaJ.horIniJanela.get(Calendar.HOUR_OF_DAY));
System.out.println(dataFormat);//Até aqui está ok, imprimi no console a string correta
listSelectHoraJ.add(new SelectItem(horaJ.getIdtJanela(),dataFormat));
}
}[/code]
Como disse o amigo acima, o f:selectItems aceita dois tipos de listas:
Listas do tipo selectItems, que ja possuem o itemLabel e itemValue configurados;
E listas quaisquer (List, List, List, etc), mas porem, assim como em dataTable, voce deve definir uma var, um item label e um itemvalue, pode exemplo:
O que acontece é o seguinte:
Você tem uma lista, e essa lista é jogada no selectItems.
Ao definir a propriedade var="", na hora da renderização, cada linha da lista equivale a um item do select. Ou seja, se voce fizer var=“horaJanela”, cada item será um objeto da lista, e será acessado igual ao bean, porém, local, ficando “#{horaJanela.Y}” onde Y
pode ser qualquer coisa dentro do seu horaJanela (id, descricao, horario, valor, novo, etc)
Ja tendo um selectItems com uma lista, e seus vars, definimos o itemLabel, que é o que será exibido nos itens, e o itemValue, que é o valor que será “jogado” para o value do selectOneMenu (no seu caso, o valor itemValue será colocado em #{bean.codHoraJanela})