java - 将整数传递给 Servlet

标签 java jsp servlets

从传递电话号码的表单提交中获取 NumberFormat 异常。但是,传递的数字实际上是一个数字,我在 servlet 中将其转换为一个 int。在错误消息中,您可以看到在 - 8456640236 中输入了一个整数。

Servlet 方法

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
    Contact newComment = new Contact();

    newComment.setName(request.getParameter("nameParameter"));
    newComment.setEmail(request.getParameter("emailParameter"));
    newComment.setPhone(Integer.parseInt(request.getParameter("phoneParameter")));
    newComment.setComment(request.getParameter("commentParameter"));

    request.setAttribute("commentAttribute", newComment);

    RequestDispatcher view = request.getRequestDispatcher("/successComment.jsp");
    view.forward(request, response);
}

错误信息

java.lang.NumberFormatException: For input string: "8456640236"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:461)
java.lang.Integer.parseInt(Integer.java:499)
org.test.Servlet.doPost(Servlet.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

最佳答案

您尝试解析的值大于 Integer 可以容纳的值,231-1 , 即 2147483647。

您需要将其设为 Long(或 long)并使用 Long#parseLong()解析它。

newComment.setPhone(Long.parseLong(request.getParameter("phoneParameter")));

请注意,这个具体问题与 JSP/Servlets无关,但与 basic Java 无关。 .在具有 main() 方法和硬编码值的普通 vanilla Java 类中执行此操作时,您会遇到完全相同的问题(这会更容易隔离问题)。

关于java - 将整数传递给 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12343854/

相关文章:

java - 更改 LocalDateTime 格式以包括秒和毫秒

java - Jasper 报告从 byte[] 插入图像

java - 使用 Spring JDBC 模板 - 性能

jsp - 在JSP页面上动态显示日志文件内容

java - 未应用 Spring 模型

java - 使用 c3p0 连接池时出错

java - Request、Session 和 ServletContext 中属性的区别

java - 我在从 Java 中的方法返回列表时遇到问题

java - 更改从 servlet 类返回的 div 类位置

java - 帮助从 HTML 表格中删除字段