Usando um nested select

Olá pessoal!

Assim, eu gostaria de pegar o nome de uma cidade, a partir de uma lista de estados…
Só q tenho uma classe q define Pessoa, e dentro dela, tem a classe Endereço, onde estão rua e coisas do tipo, e dentro dessa classe tem outra, Cidades…

Como é q faço um nested:select disso?

A partir de uma lista de estados você só irá conseguir uma lista de Cidades.

Pois uma Cidade tem um Estado e um Estado tem várias cidades, logo, uma lista de Estados irá retornar diversas Cidades…

Explique um pouco melhor a consulta que precisa fazer e quais parametros irá possuir… :thumbup:

Certo…

Tenho definidas classes Estado e Cidade, como modelos… e também as DAOs para fazer a consulta no banco de dados, que é onde está a lista de estados e cidades…

Então, quando chego na página JSP gostaria que ela mostrasse uma select de estado, e quando o usuário clicar no estado, atualizar a outra select com as cidades do estado. Sei que para isso tem q usar um JavaScript, pelo evento onclick().

Onde estou enroscada é como declarar a nested:select…
Tenho um Bean Pessoa, e dentro desse Bean, tem Endereço (uma classe Endereço dentro da classe Pessoa), e na classe Endereço tem uma classe Cidade.
Onde é q boto tudo isso na select? =P

Valeu

Bom, vamos lá…

A “melhor” maneira de se fazer isso é usando Ajax, tecnologia empregada no GMail.
Por que é melhor?
Bom porque não irá submeter sua página inteira só para trazer uma lista de cidades, porém como não conheço muito bem a tecnologia não poderei dar dicas de como fazer, talvez alguém aqui do fórum possa, ou você prefira estudar isso a parte, o que não seria má idéia :wink:

Eu estou acostumado a fazer assim. Sua página jsp deve ter dois combos um contendo os estados e outro contendo as cidades. Estes combos serão preenchidos quando o Evento onchange=“javascript:bla()” for acionado. A primeira lista deverá vir preenchida com os estados e quando um estado for selecionado, o onchange será ativado, neste momento você deve pegar o valor do seu combo que deverá ser algo do tipo “SP” e submeter para a sua action.

Na action você irá pegar o valor do estado e montar um objeto Estado. depois você irá executar um método no DAO de cidades do tipo findByEstado(Estado estado), este método irá fazer o select na tabela de cidades WHERE estado = “SP”, depois, com a lista de cidades na action você irá fazer um request.setAttribute(“estados”, estados). Na sua página jsp deverá de algum modo verificar se este atributo está presente, quando este atributo “estados” estiver presente, você deverá montar seu combo com esta lista.

Ufa! … Será que deu pra entender? Tomara. :thumbup:

Valeu… eu saquei sim “por cima” o negócio…

Só q faltou vc me explicar como é q faço uma nested:select… rs
Vi um exemplo assim:

<html:select name="states">
       <logic:terate name="statesList"
                     property="states"
			indexId="stateIndex"
                     scope="application"
                     type="com.company.dao.state"
                     id="state">
         <html:option value="<%= state.getName() %>">
           <%= state.getName() %>
         </html:option>
       </logic:iterate>
     </html:select>

Então, tô quebrando a cabeça para transformar isso numa nested:select…

Ah, e não vou usar AJAX, pq não dá tempo… hehe, mas assim q tiver um tempinho, verei… só q até lá, terei q submeter a página inteira mesmo…

Valeu