Erro com campo numerico

5 respostas
pix

Seguinte pessoal, estou começando a desenvolver uma aplicação java, quando tenho que usar campo numero acaba dando erro, segue as classes

menu.jsp

<%-- 
    Document   : menu
    Created on : 07/04/2011, 09:13:43
    Author     : Daniel
--%>

<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="persistence.Conexao"%>
<%@page import="java.sql.Connection"%>
<%@page import="org.springframework.context.annotation.Import"%>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Cadastro de Menu</title>
        <script type="text/javascript">
            var request = false;
            try {
                request = new XMLHttpRequest();
            } catch (trymicrosoft) {
                try {
                    request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (othermicrosoft) {
                    try {
                        request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (failed) {
                        request = false;
                    }
                }
            }

            if (!request)
                alert("Error initializing XMLHttpRequest!");

            function getSistema(COD) {
                var url = "<% out.print(request.getRequestURL().substring(0, request.getRequestURL().lastIndexOf("d/") + 1));%>/consultas/consultaSistema.jsp?SIS="+COD;
                request.open("GET", url, true);
                request.onreadystatechange = updatePage;
                request.send(null);
            }

            function updatePage() {
                if (request.readyState == 4) {
                    if (request.status == 200) {
                        var conteudo = "";
                        var response = request.responseText.split("|");
                        for(i=0; i < response.length; i++) {
                            conteudo += response[i] + "\n";
                        }
                        document.getElementById("descSis").value = conteudo;
                    } else
                        alert("status is " + request.status);
                }
            }
        </script>
    </head>
    <body>
        <h1>Cadastro de Menu</h1>
        <%
                    if (request.getAttribute("Salvo") != null) {
                        out.print(request.getAttribute("Salvo"));
                    }
                    Connection conn = Conexao.getInstance().getConnection();
                    int n = 0;
                    try {
                        String sql = "SELECT max(codigo) FROM MENU";
                        PreparedStatement sta = conn.prepareStatement(sql);
                        ResultSet rs = sta.executeQuery();
                        sta = conn.prepareStatement(sql);
                        while (rs.next()) {
                            n = rs.getInt(1) + 1;
                        }
                    } catch (SQLException e) {
                        out.println("Erro " + e.getMessage());
                    }
        %>
        <form action="../sMenu" method="post" enctype="multipart/form-data">
            Código
            <input type="text" name="codigo" id="codigo" value="<% out.print(n);%>" size="10"> <br />
            Sistema
            <input type="text" name="sistema" id="sistema" size="10" onblur="getSistema(this.value);"> <input type="text" name="descSis" id="descSis" disabled > <br />
            Descrição:
            <input type="text" name="descricao" size="40"> <br />
            <input type="submit" name="enviar" value="enviar">
        </form>
    </body>
</html>

sMenu.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlet.admin;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Menu;
import persistence.MenuDAO;

/**
 *
 * @author Daniel
 */
public class sMenu extends HttpServlet {

    //Connection conn = Conexao.getInstance().getConnection();
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String codigo = String.valueOf(request.getParameter("codigo"));
        String sistema = String.valueOf(request.getParameter("sistema"));
        Menu men = new Menu();
        men.setCodigo(Integer.parseInt(codigo));
        men.setSistema(Integer.parseInt(sistema));
        men.setDescricao(String.valueOf(request.getParameter("descricao")));

        MenuDAO menDAO = new MenuDAO();
        if (menDAO.salvar(men)) {
            request.setAttribute("Salvo", "Salvo com Sucesso <br />");
            request.getRequestDispatcher("/admin/menu.jsp").forward(request, response);
        } else {
            request.setAttribute("Salvo", "Erro ao Salvar <br />");
            request.getRequestDispatcher("/admin/menu.jsp").forward(request, response);
        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

e o bendito erro

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NumberFormatException: For input string: "null"
	java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	java.lang.Integer.parseInt(Integer.java:449)
	java.lang.Integer.parseInt(Integer.java:499)
	servlet.admin.sMenu.doGet(sMenu.java:27)
	servlet.admin.sMenu.doPost(sMenu.java:44)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
Apache Tomcat/6.0.26

Se alguém puder ajudar…

5 Respostas

V

Por algum motivo os parametros codigo ou sistema estão vindo vazio (""), quando vc tenta converte-lós para Integer dá o erro:
sugestão:

if(codigo != null && !codigo.trim().isEmpty()){
   men.setCodigo(Integer.parseInt(codigo));
}  
if(sistema!= null && !sistema.trim().isEmpty()){
   men.setSistema(Integer.parseInt(sistema));
}
L

men.setCodigo(Integer.parseInt(codigo)); linha 27

verifique se seu codigo nao esta vindo nulo… ou seja esta tentando fazer um parse em algo nulo, gerando a exceção.

pix

sim, está vindo nulo eu só não sei o por que disso…

Alguma idéia?

L

danielmbiz:
sim, está vindo nulo eu só não sei o por que disso…

Alguma idéia?

verifique na parte client o pq esta vindo nulo, e coloque essa validação como o valfrido.silva citou:

if(codigo != null && !codigo.trim().isEmpty()){

men.setCodigo(Integer.parseInt(codigo));

}

if(sistema!= null && !sistema.trim().isEmpty()){

men.setSistema(Integer.parseInt(sistema));

}
pix

Galera, não to conseguindo achar nenhum erro, alguém pode me dar uma luz?

Criado 14 de abril de 2011
Ultima resposta 14 de abr. de 2011
Respostas 5
Participantes 3