Primefaces - selectOneMenu pais, estado, cidade

6 respostas
E

Olá pessoal. Estou tentando montar selectOneMenu pais, que ao alterar carrega os estados e já carrega as cidades desse estado. Meu problema é que ao alterar o pais, os estados são carregados mas as cidades não. Se eu mudar o estado depois manualmente carrega as cidades. O que posso fazer para resolver esse problema ?

<h:outputLabel value="*Pais"/>
                    <h:selectOneMenu value="#{cadastroPessoasMB.pais_selecionado}"
                                     id="pais">
                        <f:selectItems value="#{cadastroPessoasMB.paises}"
                                       var="pais"
                                       itemLabel="#{pais.nome}"
                                       itemValue="#{pais.codigo_pais}" />
                        <p:ajax listener="#{cadastroPessoasMB.refreshPais}"
                                event="change"
                                update="estado, cidade"
                                process="pais, estado" />                        
                    </h:selectOneMenu>

                    <h:outputLabel value="*Estado"/>
                    <h:selectOneMenu value="#{cadastroPessoasMB.estado_selecionado}"
                                     id="estado">
                        <f:selectItems value="#{cadastroPessoasMB.estados}"
                                       var="estado"
                                       itemLabel="#{estado.nome}"
                                       itemValue="#{estado.codigo_estado}" />
                        <p:ajax listener="#{cadastroPessoasMB.refreshEstado}"
                                event="change" 
                                update="cidade"
                                process="estado" />
                    </h:selectOneMenu>

                    <h:outputLabel value="*Cidade"/>
                    <h:selectOneMenu id="cidade" value="#{cadastroPessoasMB.endereco.cidade}"
                                     converter="converteCidade"
                                     required="true"
                                     requiredMessage="Campo [Cidade] obrigatório">
                        <f:selectItems value="#{cadastroPessoasMB.cidades}"
                                       var="cidade"
                                       itemLabel="#{cidade.nome}"
                                       itemValue="#{cidade}" />
                    </h:selectOneMenu>

6 Respostas

A

O refreshPais, provavelmente, busca os estados q estão relacionados com o país. Para resolver é só buscar as cidades tbm através do primeiro estado.

E

Certo. Funciona. Problema que ao inserir o pais e o estado são carregados através de um arquivo de configuração como valores padrão. Aí eu não poderia pegar o primeiro estado.

A

Não entendi …

Ao selecionar o País e o Estado, o q são carregados através de arquivo ?

E

aluisiodsv:
Não entendi …

Ao selecionar o País e o Estado, o q são carregados através de arquivo ?

Num registro novo o país, estado, e cidade vem de acordo com o que o usuário escolher como padrão que são carregados da base de dados. Então é possível por exemplo, ao inserir um novo registro, aparecer determinado estado já selecionado. Consegui resolver o problema tudo pelo MB. Me parece código desnecessário se eu conseguisse no meu selectonemenu pais chamar o evento do estado também.

F

Eu implemento da seguinte forma!

minha lista de paises é carregada direta no postConstruct

Ao selecionar o pais eu carrego uma lista de estados de acordo com o pais selecionado e passo ela no selectItens de estados dando um NULL na lista e municipios;

ao selecionar o estado eu carrego a lista de municipios de acordo com o estado selecionado.

Por que dar um null na lista de municipios ao selecionar o pais;

Se vc seleciono o estado pais e municipio, porém esta errado, dai vc vai e seleciona o pais novamente;
ele vai recarregar os estados e consequentemente vai zera lista de municipios que somente será carregada de novo quando o estado for selecionado…

não sei se vc conseguio enteder!!

P

Bom está o seu bean do refreshPais ?

Criado 11 de março de 2011
Ultima resposta 22 de jun. de 2012
Respostas 6
Participantes 4