Boa Dia pessoal, gostaria de saber se existe alguma configuração a mais a se fazer para poder utilizar o ajax em uma SelectOneMenu, a ideia era a seguinte era disponibilizada uma lista(ainda que pequena) em uma SelectOneMenu, ai seria selecionado um item da lista colocado em uma variavel, ai o ajax (deveria funcionar) renderizando a outra SelectOneMenu que pegaria a variavel verificaria o valor dela e então montaria a lista de acordo.
xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Hello WOrld!</title>
</h:head>
<h:body>
<h:messages />
<h:form>
<h:selectOneMenu id="paises" value="#{testeBean.paisEscolhido}"
onchange="submit()">
<f:ajax event="change" actionListener="#{testeBean.estados}" render="mostraEstados" execute="paises"/>
<f:selectItems value="#{testeBean.pais}"/>
</h:selectOneMenu>
<h:selectOneMenu id="mostraEstados" value="#{testeBean.estadoEscolhido}">
<f:selectItems value="#{testeBean.estados}"/>
</h:selectOneMenu>
</h:form>
</h:body>
</html>
bean:
@ManagedBean
@RequestScoped
public class TesteBean {
public List<String> pais = new ArrayList<>();
public List<String> estados = new ArrayList<>();
public String paisEscolhido;
public String estadoEscolhido;
public List<String> getEstados() {
if(this.estados == null || this.estados.size() == 0){
estados.add("selecione um pais estado");
}else if(this.paisEscolhido.equals("Alemanha")){
estados = new ArrayList<>();
estados.add("SL 1");
estados.add("SL 2");
estados.add("SL 3");
}else if(this.paisEscolhido.equals("Brasil")){
estados = new ArrayList<>();
estados.add("SLB 1");
estados.add("SLB 2");
estados.add("SLB 3");
}
return estados;
}
public void setEstados(List<String> estados) {
this.estados = estados;
}
public List<String> getPais() {
if(pais == null || pais.size() == 0){
pais.add("escolha um pais");
pais.add("Alemanha");
pais.add("Brasil");
}
return pais;
}
//metodos getters and setters.