java.lang.NumberFormatException: null i
Asked Answered
F

5

10

Here i come up with problem while performing some operation like update,delete and insert but its return some null value with exception kindly some one could look at the code if its wrong:

Error:

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

    }
}
Fretwell answered 6/5, 2014 at 11:14 Comment(4)
Are you sure user id is a valid number?Natant
Beside the already mentioned problem with "Integer.parserInt". Is the parameter spelled "userid" or "userID"`?Bowery
delete operation worked but not updating and inserting the value i update my postFretwell
y minus point am new be i cant able to find error so only apporaching here is there any thing wrongFretwell
L
19

You're getting a NumberFormatException when trying to convert the empty string "" into an Integer...

Leipzig answered 8/5, 2015 at 11:13 Comment(0)
E
10

You get a NumberFormatException, if you do not pass a valid number to Integer.parseInt()

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

Try to print the value of request.getParameter("userid") and check.

Ewer answered 6/5, 2014 at 11:18 Comment(0)
C
1

The page you are forwarding on might have some string to integer conversions that might be creating the error

Camboose answered 12/3, 2018 at 15:59 Comment(0)
A
1

Before parsing a string you should do null check and trim then parse. If NumberFormatException occurs handle it.

Whenever you get into trouble like this, put debug statements and analyse
what actually causing exception. null or empty or whitespace or string? Then you can handle it easily.

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;
    }
}
Athamas answered 1/9, 2019 at 20:24 Comment(0)
I
0

In file user.jsp and listuser.jsp. you used space for URL Rewriting.

you should use

    <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>          
Irresolvable answered 30/5, 2020 at 9:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.