Galera to com um probleminha e gostaria que alguem pudesse me dar uma ajudinha nem que seja somente indicando um link.
Em uma aplicação que estou fazendo preciso de carregar em um combobox B todas as cidades do estado que foi selecionado no
combobox A, ja tenho todas as cidades e estados cadastrado certinho, mas nao estou compreendendo como posso fazer para carregar dinamicamente o combobox de cidades, sei que o caminho é javascript, possivelmente atraves do evento onChange do combo de estado, mas os exemplos que achei na net nao foram bem explicativos.
Alguem poderia me dar uma esclarecida nesta stiuação ? Se pelo menos me indicarem um link bom que expliquei direitinho mesmo sendo em ingles, ja esta de bom tamanho.
Estou usando vraptor 3.
Ola mais uma vez pessoal, tentei alguns exemplos que encontrei na net e o que mais se aproximou do que eu pretendo fazer é
um jquery deste tipo, mais alguem se habilita a me dar uma maozinha???
estou usando este js no meu jsp, porem nao funciona:
No meu controller estou usando este metodo para me retornar os dados das cidades em formato json.
//retornando cidades no formato json para ser carregado
@Path("/imovel/carregaCidadesPorEstado.Json")
public void carregaCidadesPorEstadoJson(String q){
int codEst = Integer.parseInt(q);
this.result.use(json()).from(this.cidade.recuperaCidade_PorEstado(codEst)).serialize();
}
E este é meu dao :
public ArrayList<Cidade> recuperaCidade_PorEstado(int estado) {
String sql = "select * from cidade where cod_estado = ?";
Cidade cidade = null;
ArrayList<Cidade> lista = new ArrayList<Cidade>();
Connection con = ConexaoJava.getConection();
try {
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setInt(1, estado);
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
cidade = new Cidade();
cidade.setCodigo(rs.getInt("cod_cidade"));
cidade.setDescricao(rs.getString("nom_cidade"));
cidade.setEstado(new Estado().recuperaEstado_PorCodigo(rs.getInt("cod_estado")));
lista.add(cidade)
}
pstm.execute();
pstm.close();
return lista;
} catch (Exception ex) {
return null;
}
}
se alguem puder me ajudar agradeço muito, aceito qualquer dica que me ajuda a fazer esta funcionalidade!
Está dando algum erro? Uma dica, use as ferramentas de debug do seu navegador para verificar o que acontece quando você envia a requisição. No Chrome é só apertar Ctrl + Shift + J. Na aba Network, por exemplo, você pode ver a requisição sendo enviada e a resposta.
Em relação ao seu código, me parece que você está enviando uma requisição para “/imovel/carregaCidadesPorEstado” e o seu controller é “/imovel/carregaCidadesPorEstado.Json”. O nome deve ser o mesmo. Você pode passar os parâmetros “?codigoEstado=${estado}” num objeto separado, o próprio jquery vai ajustar ele na requisição.
Fora isso recomendo debugar e informar-nos o erro que ocorre.
Seguindo os conselhos do nosso amigo wagnerfrancisco, ajustei o nome do metodo que retorna a lista de cidade no meu controller e fiz um debug usando google chrome, para minha surpressa o console do google chrome nao me reporta erros, e ate consegui visualizar as cidades em formato json no debug, mas o problema e que ainda sim as cidades nao estao sendo populadas no jsp, acho que o problema esta no meu js, mas nao sei o que, se algum puder me ajudar agradeço.
Obrigado a todos que já ajudaram. !!!
//retornando cidades no formato json para ser carregado
@Path("/imovel/carregaCidadesPorEstado/{q}")
public void carregaCidadesPorEstado(String q){
int codEst = Integer.parseInt(q);
this.result.use(json()).from(this.cidade.recuperaCidade_PorEstado(codEst)).serialize();
}
meu dao esta assim:
public ArrayList<Cidade> recuperaCidade_PorEstado(int estado) {
String sql = "select * from cidade where cod_estado = ?";
Cidade cidade = null;
ArrayList<Cidade> lista = new ArrayList<Cidade>();
Connection con = ConexaoJava.getConection();
try {
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setInt(1, estado);
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
cidade = new Cidade();
cidade.setCodigo(rs.getInt("cod_cidade"));
cidade.setDescricao(rs.getString("nom_cidade"));
cidade.setEstado(new Estado().recuperaEstado_PorCodigo(rs.getInt("cod_estado")));
lista.add(cidade);
}
pstm.execute();
pstm.close();
return lista;
} catch (Exception ex) {
return null;
}
}
Desenvolvi um exemplo utilizando JSP, JSTL, jQuery, Ajax e VRaptor, para ilustrar o assunto do tópico. Obviamente, é um exemplo puramente didático que só deve ser utilizado para as finalidades deste tópico do fórum.
Os fontes estão no arquivo anexo (no formato do NetBeans) e uma versão funcional (sugiro utilizar o Firefox) pode ser temporariamente encontrada em http://zona8.com.br/exemploGUJCidadeEstado.
Caso haja necessidade de mais explicações, podemos continuar a discussão aqui.