Multiple Dropdown Dependent
lucianosilva Jul 15, 2009 12:29 AMHello there,
I have a problem with three dependent dropdown, I need display in this order, see:
1- Country
2- State
3- City
So, I can build the dropdown to Country and States with dependents functions, but, when the state are selected the cities not loaded. You understand me?
// JSF <h:panelGrid id="panel" rendered="true" border="0" columns="2" width="500" cellpadding="1" cellspacing="2"> <h:outputLabel value="Pais" for="pais"/> <h:selectOneMenu id="pais" value="#{umb.pessoa.pais.id_pais}" rendered="true"> <f:selectItems value="#{umb.paises}"/> <a4j:support event="onchange" ajaxSingle="true" action="#{umb.actionCarregarEstados}" reRender="estado"/> </h:selectOneMenu> <h:outputLabel value="Estado" for="estado"/> <h:selectOneMenu id="estado" value="#{umb.pessoa.estado.id_estado}" rendered="true"> <f:selectItems value="#{umb.estados}"/> <f:converter converterId="estadoConvert"/> <a4j:support event="onchange" ajaxSingle="true" action="#{umb.actionCarregarCidades}" reRender="cidade"/> </h:selectOneMenu> <h:outputLabel value="Cidade" for="cidade"/> <h:selectOneMenu id="cidade" value="#{umb.pessoa.cidade.id_cidade}" rendered="true"> <f:selectItems value="#{umb.cidades}"/> </h:selectOneMenu> </h:panelGrid>
My Manager Bean
public class UirapuruManagerBean { /** hide **/ public SelectItem[] getPaises(){ List<Pais> lp = regiaoDao.getAllPais(); List<SelectItem> itens = new ArrayList<SelectItem>(lp.size()); for( Pais p : lp ){ itens.add( new SelectItem(p.getId_pais(), p.getNm_pais()) ); }// for end return itens.toArray( new SelectItem[itens.size()] ); } public SelectItem[] getEstadosByPais(int id_pais){ List<Estado> estados = regiaoDao.getEstadosDoPais(id_pais); List<SelectItem> itens = new ArrayList<SelectItem>(estados.size()); for( Estado e : estados ){ itens.add( new SelectItem(e.getId_estado(), e.getNm_estado()) ); }// for end return itens.toArray( new SelectItem[itens.size()] ); } public SelectItem[] getCidadesByEstado(int id_estado){ System.out.println("ID-Estado: " + id_estado); List<Cidade> cidades = regiaoDao.getCidadesDoEstado(id_estado); List<SelectItem> itens = new ArrayList<SelectItem>(cidades.size()); for( Cidade c : cidades ){ itens.add( new SelectItem(c.getId_cidade(), c.getNm_cidade()) ); }// for end return itens.toArray( new SelectItem[itens.size()] ); } public String actionCarregarEstados(){ this.estados = getEstadosByPais( getPessoa().getPais().getId_pais() ); return "SUCCESS"; } public String actionCarregarCidades(){ this.cidades = getCidadesByEstado( getPessoa().getEstado().getId_estado() ); return "SUCCESS"; } }
I using a Convert Class, but not resolve this problem, the attribute pessoa.estado.id_estado into Manager Bean not receive the value when change value in <h:selectOneMenu id="estado">.
What's happening?
Help me, please!
Thanks!