SelectOneMenu só aparece o objeto e não co conteúdo que deveria

Olá Pessoal,

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]

xhtml

<h:outputText value="Hora da Janela:" for="horaJanela" /> <h:selectOneMenu value="#{bean.codHoraJanela}" id="horaJanela" rendered="#{bean.type == 'Fixo'}" > <f:selectItems value="#{bean.listaHoraJanela}" />

O que pode ser? Devo estar esquecendo de alguma coisa.

Obrigada!

Débora

<f:selectItems var #{temp} value="#{bean.listaHoraJanela}" itemLabel="#{temp.label}" />

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:

<h:selectOneMenu value="#{bean.codHoraJanela}" id="horaJanela"
       rendered="#{bean.type == 'Fixo'}">
       <f:selectItems value="#{bean.listHoraJanela}" var="horaJanela" itemLabel="#{horaJanela.descricao}" itemValue="#{horaJanela.valor}" />
</h:selectOneMenu>

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})

Isso aí brufelipe, mto boa explicação, na hora eu tava com as coisas meio corridas e não deu tempo de explicar o q tinha ocorrido, valeu :smiley: :smiley: :smiley: