web-dev-qa-db-fra.com

java.lang.NumberFormatException: null i

Ici, je rencontre un problème lors de l'exécution d'une opération comme la mise à jour, la suppression et l'insertion, mais son retourne une valeur nulle avec exception, bien que quelqu'un puisse regarder le code si son erreur:

Erreur:

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

    }
}
7
user3607180

Vous obtenez une exception NumberFormatException lorsque vous essayez de convertir la chaîne vide "" en entier ...

13
Jagdeep

Vous obtenez une exception NumberFormatException, si vous ne passez pas un nombre valide à Integer.parseInt ()

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

Essayez d'imprimer la valeur de request.getParameter ("userid") et vérifiez.

9
Jay

La page que vous transférez peut contenir des conversions de chaînes en nombres entiers susceptibles de créer l'erreur

1
user9480702

Avant d'analyser une chaîne, vous devez effectuer une vérification et un ajustement nuls, puis analyser. Si NumberFormatException se produit, gérez-le.

Chaque fois que vous rencontrez des problèmes comme celui-ci, mettez des instructions de débogage et analysez
ce qui cause réellement l'exception. null ou vide ou espace ou chaîne? Ensuite, vous pouvez le gérer facilement.

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