Combobox Dinâmico JSP não retorna a cidade

Amigos estou com esse probleminha a pagina lista os estados mas quando é pra carregar as cidades não rola. Alguem pode me ajuda?

Create table “tb_estados”
(
“id” Serial NOT NULL,
“uf” Varchar,
“nome” Varchar,
primary key (“id”)
);

Create table “tb_cidades”
(
“id” Serial NOT NULL,
“estado” Integer NOT NULL,
“uf” Varchar,
“nome” Varchar,
primary key (“id”,“estado”)
);

----------------> index.jsp

Será que consigo
$(document).ready(function(){
$("select[name=estado]").change(function(){
    $("select[name=cidade]").html('<option value="0">Carregando...</option>');

$.post("cidades.jsp",
       {estado:$("select[name=estado]").val()},
       function(valor){
           $("select[name=cidade]").html(valor);
       }
       )
    })
})

</script>
<%@ include file="menu.jsp" %> <%@ page import="bd.ConexaoPostgres" %> <%@ page import="java.sql.*"%>

<%

// abre a conexão
Connection con = ConexaoPostgres.abrirConexao();

// comando SQL de remoção de dados
String sql = "select * from tb_estados";

// prepara o banco a receber um comando SQL
Statement sta = con.createStatement();

// executa o comando SQL
ResultSet resultado = sta.executeQuery(sql);

%>

Escolha um Estado <% while (resultado.next()) {
	out.println("<option value='"+resultado.getInt("id")+"'>" + resultado.getString("nome") + "</option>");

}
%>

<option value="0" disabled="disabled">Escolha um estado</option>

-----------------> cidades.jsp

<%@ include file=“menu.jsp” %>
<%@ page import=“bd.ConexaoPostgres” %>
<%@ page import=“java.sql.*”%>
<%

// abre a conexão
Connection con = ConexaoPostgres.abrirConexao();

// as duas linhas a seguir pega os valores que vieram do formulário
String estado= request.getParameter("estado");

// comando SQL de remoção de dados
String sql = "SELECT * FROM tb_cidades WHERE estado= " + estado;

// prepara o banco a receber um comando SQL
Statement sta = con.createStatement();

// executa o comando SQL
ResultSet resultado = sta.executeQuery(sql);

String nome = "";

if (resultado.next()){
	nome = resultado.getString("nome");

}

%>

<%
while (resultado.next()) {

	out.println("<option value='"+resultado.getInt("id")+"'>" + resultado.getString("id") + "</option>");

}
%>

Aconselho mudar essa solução.

Primeiro, no fórum sempre que for postar código, coloque entre as tags code.
Agora sobre o seu código, NUNCA coloque regra de negócio no JSP, separe as camadas web (MVC). No seu caso, você poderia ter um Servlet para fazer o controller e uma classe para fazer o model (conectar no banco e etc).

Como você quer um combo dinâmico, você pode usar o proprio JQuery (que voce está usando) e usar o $.ajax dele, ou então um framework mais java-like, como DWR. Aconselho dar um olhada nesses caras.

Jair não tem nenhuma maneira de aproveitar esse codigo e usalo uma correção acho que falta tão pouco ele carrega o estado quando é pra listar as cidade é que não lista.

Até tenta o carregamento mas retorna sem valor.

Bom Diego,

Você diz que está quase pronto, porém não está funcionando, portanto está longe de ficar pronto :lol:
E sim, mude o mais rápido possível para o padrão MVC, com certeza isso vai evitar horas e horas de noite mal dormidas.
No caso do seu código, migrar para o padrão MVC está bastante simples. Força que você consegue :slight_smile:

No tutorial do DWR em português, têm exemplos sobre como popular um combobox de acordo com as opções selecionadas em checkboxes, não é o seu caso, mas dá uma noção.

http://directwebremoting.org/dwr/index.html

http://directwebremoting.org/dwr/files/languages/tutorial_DWR-PR.pdf

[]s