问题
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");
}
}
}
回答1:
You're getting a NumberFormatException when trying to convert the empty string "" into an Integer...
回答2:
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.
回答3:
The page you are forwarding on might have some string to integer conversions that might be creating the error
回答4:
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;
}
}
来源:https://stackoverflow.com/questions/23493164/java-lang-numberformatexception-null-i