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

3 respostas
D

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:
public List<SelectItem> 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));
				

			}
		}

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

3 Respostas

I

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

B

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

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:

Criado 19 de outubro de 2012
Ultima resposta 25 de out. de 2012
Respostas 3
Participantes 3