Pegar o itemLabel do h:selectOneMenu no mBean

1 resposta
Samaya

Boa tarde, precisava de uma ajuda com um problema que já estou tentando resolver a um tempinho e não consegui.

Tenho um projeto JSF onde estou usando um selectOneMenu. Eu carrego uma lista de uma tabela do banco e atribuo os valores itemValue e imteLabel do f:selectItems com os valores retornados da lista.
Mas no value do selectOneMenu estou enviando o valor do itemValue para outro campo. Até ai tudo bem. O problema é que eu preciso acessar o valor do itemLabel selecionado no MBean, mas não estou conseguindo.

Estou declarando um list e carregado ele no controlador do MBean. Quando eu selecino um valor o meu ajax vai chamar outra função onde eu quero pegar o itemLabel da lista, mas não sei como pegar este valor.

Xhtml:
<h:selectOneMenu id="somNacionalidade" value="#{UtilidadesController.protocolo.idPaisNacionalidade}">
		<f:selectItem itemLabel="Selecione um valor" itemValue="0" />									
		<f:selectItems value="#{UtilidadesController.listaPais}" var="listPaisNat" itemLabel="#{listPaisNat.nmPais}" itemValue="#{listPaisNat.idPais}" />									
		<p:ajax event="change" update="somNaturalidadeEst" listener="#{UtilidadesController.carregaComboUF}" />			
</h:selectOneMenu>
MBean:
public class UtilidadesController {
      	private List<Pais> listaPais = new ArrayList<Pais>();
       	private Pais pais;

public UtilidadesController() {

		this.pais = new Pais();
		this.regBO = new RegiaoBO();

		//Inicializa combos
		carregaComboPais();
	}

         public void carregaComboPais() {
		try {
			this.listaPais = this.regBO.listaPais();
		} catch (SiprotGenericException e) {
			log.error(e.getMessage(), e);
			e.printStackTrace();
		}
	}

            public void carregaComboUF() {
		
	    //preciso pegar o itemLabel do selectOneMenu dentro deste método.
	}
}

Se alguém puder me ajudar por favor, eu já tente declarar um DataModel no lugar do list e tentar pegar o label pelo getRowData(), mas não funcionou. Foi assim: pais = (Pais)this.listaPais.getRowData(). Encontrei alguns forúns dizendo que era bug então resolvi tentar com o list, mas também não estou conseguindo.

Se algúem puder me ajudar, obrigada. :shock:

1 Resposta

A

cara,

pode vc nao coloca no itemValue o seu objeto, vc vai ter que criar um converter, mas vc vai ter a referencia do seu objeto la no bean, entao pode pegar o label.

espero que te ajude.

t+

Criado 29 de setembro de 2011
Ultima resposta 29 de set. de 2011
Respostas 1
Participantes 2