[Resolvido] Ajuda com ComBox com valores Fixo

Estou fazendo um Combox fixo em .JSP, porém o mesmo me apresenta a informação, mas grava em branco no banco de dados

Trecho JSP:

<td>UF:</td> <td> <select size="1" name="cidade"> <option selected value="Selecione">Selecione!</option> <option value="${cidade.uf}">PR</option> <option value="${cidade.uf}">SP</option> </select> </td>

O atributo da minha classe Cidade que grava o estado é uf.

Método que adiciona na CidadeDao:

[code] public void adiciona(Cidade cidade) {
String sql = “insert into tbcidade (nomeCidade, uf) values (?,?)”;
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, cidade.getNomeCidade());
stmt.setString(2, cidade.getUf());

        stmt.execute();
        stmt.close();
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}[/code]

Trecho Servlet:

[code] String nome = request.getParameter(“nomeCidade”);
String uf = request.getParameter(“uf”);

    Cidade novaCidade = new Cidade();

    novaCidade.setNomeCidade(nome);
    novaCidade.setUf(uf);

    CidadeDao dao = new CidadeDao();

    dao.adiciona(novaCidade);[/code]

Debug por partes a sua aplicação para verificar onde está o problema.

  1. Verifique se o HTML está com os valores corretos
  2. Verifique se os valores no POST estão corretos
  3. Verifique se o servlet recebeu os valores corretos.

por ai vai

Fiz os testes e não conseguir achar o defeito.

Troquei o Combobox por um Input e gravou normalmente no campo.

O problema deve estar no combobox do JSP não? pois o Input funcionou.

Cara, use o firebug ou qquer coisa do gênero para ver se o HTML que aparece no browser está com o value setado corretamente.

Se estiver OK, veja se o post que sai do browser também está com o parameter setado corretamente.

Aliás, acho que o nome do parameter é cidade, não uf!

Troquei o Parâmetros de uf para cidade, mas também não funcionou.

Estou tendo dificuldade para resolver este problema, Não consigo acha erro com o Debug.

Vou colocar minha JSP e Servlet inteira para ver se ajuda.

[code]<%–
Document : adiciona-cidade
Created on : 19/03/2012, 17:28:37
Author : Administrador
–%>

<%@page contentType=“text/html” pageEncoding=“UTF-8”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<jsp:useBean id= “modelo” class = “modelo.Cidade”/>

<c:import url=“cabecalho.jsp” />

Cadastro de Cidade
Nome:
Uf:
UF: Selecione! PR SP
[/code]

[code]public class AdicionaCidadeServlet extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    String nome = request.getParameter("nomeCidade");
    String uf = request.getParameter("uf");

    Cidade novaCidade = new Cidade();

    novaCidade.setNomeCidade(nome);
    novaCidade.setUf(uf);

    CidadeDao dao = new CidadeDao();

    dao.adiciona(novaCidade);
    try {
        RequestDispatcher rd = request.getRequestDispatcher("/cidade-adicionada.jsp");
        rd.forward(request, response);


    } finally {
        out.close();
    }
}[/code]

Isso aqui não funciona?

String nome = request.getParameter("cidade");

Não, ele salva apenas o nome da cidade.

Eu coloquei errado. Era pra ser:

String uf = request.getParameter("cidade");  

Instale o firebug para o firefox e monitore o post que você está dando para ver o que está indo! Isso vai ajudar muito pra descobrir o problema.

Como funciona esse Firebug no Chrome ?

tentei usar aqui, mas acho que não consegui.

[code]outerHTML
"\n

Selecione!\n PR\n SP\n "[/code]

Não sei se isso ai vai ajudar muito.

Ajuda sim.

Isso que você postou é o resultado que você extraiu do firebug, certo?

Por ele dá pra ver que é no seu jsp o problema, já que o value das tag option de cada estado estão vazias.

Portanto este trecho está errado

                    <select size="1" name="cidade">  
                        <option selected value="Selecione">Selecione!</option>  
                        <option value="${cidade.uf}">PR</option>  
                        <option value="${cidade.uf}">SP</option>  
                    </select>

Como este jsp é chamado na sua aplicação? Tente substituir ${cidade.uf} pelos values de cada cidade para ver se tudo funciona OK.

Caso funcione, depois acertamos para setar isso dinamicamente :wink:

Provavelmente o seu erro está acontecendo porque você esta tentando fazer um combo fixo parem com valores que precisão ser interados(modificado a cada option).

<td>UF:</td> <td> <select size="1" name="cidade"> <option selected value="Selecione">Selecione!</option> <option value="${cidade.uf}">PR</option> <option value="${cidade.uf}">SP</option> </select> </td>

“cidade.uf” nesse caso teria um valor diferente a cada option correto ?
Já que você tem uma lista fixa você não precisa usar um atributo cidade.uf pois o valor dele não vai mudar, já que você não está interando ele e nem carregando informações do banco de dados por exemplo.

Como é uma lista fixa de valores coloque assim :

<td>UF:</td> <td> <select size="1" name="cidade"> <option selected value="Selecione">Selecione!</option> <option value="PR">PR</option> <option value="SP">SP</option> </select> </td>

Att;

[quote=BtAquino]Estou fazendo um Combox fixo em .JSP, porém o mesmo me apresenta a informação, mas grava em branco no banco de dados

Trecho JSP:

<td>UF:</td> <td> <select size="1" name="cidade"> <option selected value="Selecione">Selecione!</option> <option value="${cidade.uf}">PR</option> <option value="${cidade.uf}">SP</option> </select> </td>

O atributo da minha classe Cidade que grava o estado é uf.

Método que adiciona na CidadeDao:

[code] public void adiciona(Cidade cidade) {
String sql = “insert into tbcidade (nomeCidade, uf) values (?,?)”;
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, cidade.getNomeCidade());
stmt.setString(2, cidade.getUf());

        stmt.execute();
        stmt.close();
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}[/code]

Trecho Servlet:

[code] String nome = request.getParameter(“nomeCidade”);
String uf = request.getParameter(“uf”);

    Cidade novaCidade = new Cidade();

    novaCidade.setNomeCidade(nome);
    novaCidade.setUf(uf);

    CidadeDao dao = new CidadeDao();

    dao.adiciona(novaCidade);[/code][/quote]

Agora deu certo!

Obrigado!

Ficou assim:

Servlet

 String uf = request.getParameter("cidade");

JSp:

<tr> <td>UF:</td> <td> <select size="1" name="cidade"> <option selected value="Selecione">Selecione!</option> <option value="PR">PR</option> <option value="SP">SP</option> </select> </td> </tr>