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: