Pegar item selecionado na combo!

Olá,

Estou tentando fazer um cadastro de cidades… utilizando servlet+jsp, eu consegui carregar os estados do banco na combo… O que eu gostaria de saber é como pegar o estado escolhido pelo usuário para poder inserir a cidade

Servlet…
Essa parte ta funcionando blz…

    private String principal(HttpServletRequest request, HttpServletResponse response) {
        //Consulta as cidades
        List listaCidades= cidadeBO.listaCriterio(Cidade.class,"nome","",1);
        request.setAttribute("cidades",listaCidades);
        
        //Consulta os Estados
        List listaEstados= estadoBO.listaCriterio(Estado.class,"nome","");
        request.setAttribute("estados",listaEstados);
        
        return "principal.jsp";
    }

Essa parte do incluir que estou com dúvidas quanto a pegar o estado escolhido pelo usuário!

    private String incluir(HttpServletRequest request, HttpServletResponse response) {
        List listaEstados= estadoBO.listaCriterio(Estado.class,"nome","");
        request.setAttribute("estados",listaEstados);        
        
        System.out.println(request.getAttribute("mensagem"));
        String nome=request.getParameter("nome");
        
    //   ArrayList listaEstados = (ArrayList)request.getParameter("cboEstado");  
    // String estado=request.getParameter("estado");
        
        try{
            Cidade c=new Cidade();
            c.setNome(nome);
   //         c.setEstado((Estado) listaEstados.get(id));
            cidadeBO.incluiCidade(c);
            request.setAttribute("mensagem",cidadeBO.getMensagem());
        } catch(BOException ex){
            request.setAttribute("mensagem",ex.getMessage());
        }
        return null;
    }

Trecho página jsp q contem a combo.

        <form action="index.jsp?acao=incluir" method="POST">
            <input type="hidden" name="idCidade" value="${c.idCidade}" />
            Nome:   <input type="text" name="nome" value="${c.nome}" /><br>            
            Estado: <select name="estado" id="cboestado"> 
                        <option value="">                            
                        </option> 
                        <c:forEach var="estados" items="${estados}">
                        <option>                     
                                ${estados.sigla}                                
                        </option>
                                 </c:forEach>     
                        </select>

            <input type="submit" value="Incluir Cidade" />        
        </form>

Se alguém puder ajudar!
Desde já agradeço

Diego

Da mesma forma que pega os outros campos exceto o checkbox que pode ser mais de 1.

public void service(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
    request.getParameter("nomeCampo");
}

Geralmente nesses casos colocamos o código no value da combo e a descrição para o usuario ver, sendo assim é preciso transformar em int para passar para seu método se o mesmo receber nesse tipo, para capturar as informações de um combo é considerado o que esta dentro do value.

Ex:

<select name="estado" id="cboestado"> 
    <option value=""></option> 
    <c:forEach var="estados" items="${estados}">
        <option value="${estados.codigo}">${estados.sigla}</option>
     </c:forEach>     
</select>

//obtendo as cidades

public void service(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
    request.setAttribute("cidades",getCidades(Integer.parseInt(request.getParameter("nomeCampo"))));
    
}

Obrigado pela ajuda…

A parte do combo eu entendi…

O que eu não entendi foi a parte de pegar o estado escolhido pelo usuário na combo!

Essa parte:

request.setAttribute("cidades",getCidades(Integer.parseInt(request.getParameter("nomeCampo"))));

Tentei assim… só que está errado!

[code]
private String incluir(HttpServletRequest request, HttpServletResponse response) {
Cidade c=new Cidade();
System.out.println(request.getAttribute(“mensagem”));
String nome=request.getParameter(“nome”);

    try{
        c.setNome(nome);
        c.setEstado(request.setAttribute("cidades",c.getEstado(Integer.parseInt(request.getParameter("idEstado")))));
        cidadeBO.incluiCidade(c);
        request.setAttribute("mensagem",cidadeBO.getMensagem());
    } catch(BOException ex){
        request.setAttribute("mensagem",ex.getMessage());
    }
    return null;
}[/code]

Valew pela ajuda…

Diego

É assim voce obtem o valor da combo:

Integer.parseInt(request.getParameter("estado"));

E usa no seu método jogando esse valor, o exemplo que te passei era obter uma lista de cidades recebendo um estado de parametro.

Troque aqui:

//de

c.setEstado(request.setAttribute("cidades",c.getEstado(Integer.parseInt(request.getParameter("idEstado")))));

//para

c.setEstado(Integer.parseInt(request.getParameter("nomeCampo")));

Note que tinha request no seu codigo, não estamos passando nada de volta ainda para a camada view.

Agora funcionou!!

Muito Obrigado pela ajuda!

Valew

T+

Diego