Tenho hoje listas com dados das minhas tabelas, como por exemplo:
Estados
[todos os estados]
Cidade
[todas as cidades]
Gostaria de quando fosse escolhido por exemplo estado SC, que trouxesse somente as cidades que estejam atreladas ao estado SC, no caso que recarregasse o meu HtmlSelectOneMenu com sua lista de itens.
Tenho essa aplicaçao feita em JSF, onde tudo é criado dinamicamente, nada é por html.
Mas se tiverem alguma sugestão de como fazer, nem que seja em html mesmo.
Grato
Eu uso Richfaces. Com a tag a4j:support, você “chama” o método do seu controller e “renderiza” o componente de sua escolha.
No código abaixo, ao modificar a combo uf (a4j:support com event=“onchange”), é chamado o método seuController.carregaMunicipios(), esse método carrega a list de municípios do meu controller listaMunicipioTOs, e depois atualiza o component “municipio” com todos os municípios da UF.
Obs.: A tag s:selectItems e do JBoss Seam. Se você estiver usando o JSF, use o f:selectItems.
<!-- CAMPO UNIDADE DA FEDERACAO -->
<h:outputLabel value="UF:" id="ufLabel" />
<h:selectOneMenu id="uf" value="#{seuController.siglaUF}">
<s:selectItems value="#{seuController.ufs}" noSelectionLabel="Selecione..."
var="uf" label="#{uf.getSiglauf()}" itemValue="#{uf.getSiglauf()}" />
<a4j:support action="#{seuController.carregaMunicipios()}" ajaxSingle="true"
event="onchange" reRender="municipio" />
</h:selectOneMenu>
<!-- CAMPO MUNICIPIO -->
<h:outputLabel value="Município:" id="municipioLabel" />
<h:selectOneMenu id="municipio" value="#{seuController.codigoIbge}">
<s:selectItems value="#{seuController.listaMunicipioTOs}"
noSelectionLabel="Selecione..." var="municipio"
label="#{municipio.getMunicipio()}"
itemValue="#{municipio.getCodigoIbge()}" />
<rich:ajaxValidator event="onblur" />
</h:selectOneMenu>
Espero que ajude!