【问题标题】:java.lang.NumberFormatException: null ijava.lang.NumberFormatException:空我
【发布时间】:2014-05-06 11:14:26
【问题描述】:

这里我在执行更新、删除和插入等操作时遇到了问题,但它返回一些空值并出现异常,如果代码错误,有人可以查看代码:

错误:

HTTP Status 500 - null

type Exception report

message null

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

exception

java.lang.NumberFormatException: null
    java.lang.Integer.parseInt(Integer.java:454)
    java.lang.Integer.parseInt(Integer.java:527)
    Controller.ControllerTest.doGet(ControllerTest.java:48)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.

Apache Tomcat/6.0.37

user.jsp:

<form method="POST" action='ControllerTest' name="frmAddUser">

  <jsp:useBean id="users" class="java.util.ArrayList" scope="request" />
        <% for(int i = 0; i < users.size(); i+=1) 
        { 
            UseBean user = (UseBean)users.get(i);
        %>

        id:<input type="text" name="ID" value="<%=user.getID() %>"><br/>
        Name:<input type="text" name="Name" value="<%= user.getName() %>"><br/>
        Password:<input type="text" name="password" value="<%= user.getPassword() %>"><br/>
        phoneno:<input type="text" name="Phoneo" value="<%= user.getPhoneo() %>"><br/>
        Emailid:<input type="text" name="Emailid" value="<%= user.getEmailID() %>">  <br/> 

        <%} %>
         <input type="submit" value="Submit" />
    </form>

listuser.jsp

  <body>
<table border=1>
<thead>
    <tr>
    <th>Id</th>
    <th>Name</th>
    <th>password</th>
    <th>phoneno</th>
    <th>emailid</th>
    <th colspan=2>Action</th>
    </tr>
</thead>
<tbody>
    <jsp:useBean id="users" class="java.util.ArrayList" scope="request" />
    <% for(int i = 0; i < users.size(); i+=1) 
    { 
        UseBean user = (UseBean)users.get(i);
    %>
        <tr>
        <td><%= user.getID() %></td>
        <td><%= user.getName() %></td>
        <td><%= user.getPassword() %></td>
        <td><%= user.getEmailID() %></td>
        <td><%= user.getPhoneo() %></td>
        <td><a href="ControllerTest?action=edit&userId=<%= user.getID() %>" >Update</a></td>
        <td><a href="ControllerTest?action=delete&userId=<%= user.getID() %>">Delete</a></td>
        </tr>
    <% } %>
</tbody>
</table>
<p>
<a href="ControllerTest?action=insert">Add User</a>
</p>

Controllertest.java:

package Controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.UserDao;
import dbBean.UseBean;

public class ControllerTest extends HttpServlet
{
    private static final long serialVersionUID = 1L;
    private static String INSERT_OR_EDIT = "/user.jsp";
    private static String LIST_USER = "/listUser.jsp";

    private UserDao dao;

    public ControllerTest()
    {
        super();
        dao = new UserDao();

    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {

        String forward = "";
        String action = request.getParameter("action");
        if (action.equalsIgnoreCase("delete"))
        {
            try
            {
                int userId = Integer.parseInt(request.getParameter("userId"));
                dao.deleteUser(userId);
                forward = LIST_USER;
                request.setAttribute("users", dao.getAllUsers());
            }
            catch (NumberFormatException ex)
            {

                System.out.println("Error occured with during conversion delete");
            }
        } 
        else if (action.equalsIgnoreCase("edit"))
        {
            forward = INSERT_OR_EDIT;
            try
            {

                int userId = Integer.parseInt(request.getParameter("userId"));
                UseBean bean = dao.getUserById(userId);
                request.setAttribute("user", bean);

            } catch (NumberFormatException ex)
            {

                System.out.println("Error occured with during conversion edit");
            }
        }
        else if (action.equalsIgnoreCase("listUser"))
        {
            forward = LIST_USER;
            request.setAttribute("users", dao.getAllUsers());
        } else
        {
            forward = INSERT_OR_EDIT;
        }
        RequestDispatcher view = request.getRequestDispatcher(forward);
        view.forward(request, response);

    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {

        try
        {
            UseBean bean = new UseBean();
            bean.setName(request.getParameter("Name"));
            bean.setPassword(request.getParameter("password"));
            bean.setPhoneo(request.getParameter("Phoneo"));
            bean.setEmailID(request.getParameter("Emailid"));
            String userid = request.getParameter("ID");
            if (userid == null || userid.isEmpty())
            {
                dao.addUser(bean);
            } else
            {
                bean.setID(Integer.parseInt(userid));
                dao.updateUser(bean);
            }
            RequestDispatcher view = request.getRequestDispatcher(LIST_USER);
            request.setAttribute("users", dao.getAllUsers());
            view.forward(request, response);

        }

        catch (Exception e)
        {
            e.printStackTrace();
            System.out.println("erro occuring in update code");
        }

    }
}

【问题讨论】:

  • 您确定用户 ID 是有效数字吗?
  • 除了已经提到的“Integer.parserInt”问题。参数拼写是“userid”还是“userID”`?
  • 删除操作有效但没有更新和插入值我更新我的帖子
  • y 减点是新的,因为我无法找到错误,所以只有在这里找到有什么问题

标签: java jsp servlets numberformatexception


【解决方案1】:

在尝试将空字符串 "" 转换为整数时遇到 NumberFormatException...

【讨论】:

    【解决方案2】:

    如果您没有将有效数字传递给 Integer.parseInt(),则会收到 NumberFormatException

    int userId = Integer.parseInt(request.getParameter("userid"));
    

    尝试打印 request.getParameter("userid") 的值并检查。

    【讨论】:

      【解决方案3】:

      您要转发的页面可能有一些字符串到整数的转换,这可能会导致错误

      【讨论】:

        【解决方案4】:

        在解析一个字符串之前,你应该做空检查和修剪然后解析。如果出现 NumberFormatException 处理它。

        每当你遇到这样的麻烦时,请输入调试语句并分析
        实际导致异常的原因。 null 或空或空格或字符串?然后你就可以轻松搞定了。

        Integer userId= parseToNumber(request.getParameter("userId"));
        //check for not null and proceed
        
        
        // returns null if receivedParam = "", "some string", null or number with space
        private Integer parseToNumber(String receivedParam)
        {
            System.out.println("received param:"+receivedParam);
            if (receivedParam != null && !receivedParam.trim().isEmpty())
            {
                try
                {
                    return Integer.parseInt(receivedParam.trim());
                }
                catch (NumberFormatException nfe)
                {
                    System.out.println("received param is not a number");
                    return null;
                }
            }
            else
            {
                System.out.println("received param is null or empty");
                return null;
            }
        }
        

        【讨论】:

          【解决方案5】:

          在文件 user.jsp 和 listuser.jsp 中。你为 URL 重写使用了空间。

          你应该使用

              <tr>
              <td><%=user.getID()%></td>
              <td><%=user.getName()%></td>
              <td><%=user.getPassword()%></td>
              <td><%=user.getEmailID()%></td>
              <td><%=user.getPhoneo()%></td>
              <td><a href="ControllerTest?action=edit&userId=<%=user.getID()%>" >Update</a></td>
              <td><a href="ControllerTest?action=delete&userId=<%=user.getID()%>">Delete</a></td>
              </tr>          
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-18
            相关资源
            最近更新 更多