[Resolvido] Ajuda com ComBox com valores Fixo

11 respostas
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:

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);
        }
    }

Trecho Servlet:

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);

11 Respostas

ezmarques

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

BtAquino

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.

ezmarques

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!

BtAquino

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.

<%-- 
    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"/>
<!DOCTYPE html>
<c:import url="cabecalho.jsp" />
<form action="AdicionaCidade">
    <fieldset>
        <legend>Cadastro de Cidade</legend>
        <table>
            <tr>
                <td>Nome:</td>
                <td><input type="text" name="nomeCidade" size="30"/><br /></td>
            </tr>
            <tr>
                <td>Uf:</td>
                <td><input type="text" name="uf" size="30" /><br /></td>
            </tr>
            <tr>
                <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>
            </tr>
            <tr>
                <td><input type="submit" value="Gravar" /></td>
            </tr>
        </table>
    </fieldset>
</form>
<c:import url="rodape.jsp" />
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();
        }
    }
ezmarques

Isso aqui não funciona?

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

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

ezmarques

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.

BtAquino

Como funciona esse Firebug no Chrome ?

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

outerHTML
"<select size="1" name="cidade">\n                        
<option selected="" value="Selecione">Selecione!</option>\n                        
<option value="">PR</option>\n                        
<option value="">SP</option>\n                    
</select>"

Não sei se isso ai vai ajudar muito.

ezmarques

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:

brunojf

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;

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:

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);
        }
    }

Trecho Servlet:

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);
BtAquino

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>

Criado 20 de março de 2012
Ultima resposta 26 de mar. de 2012
Respostas 11
Participantes 3