【问题标题】:Number format exception in jsp pagejsp页面中的数字格式异常
【发布时间】:2013-02-19 23:18:06
【问题描述】:

我开发了一个简单的 jsp 页面,其中包含两个文本字段和一个用于添加两个数字的提交按钮。在浏览器中编译后显示错误:

HTTP Status 500

org.apache.jasper.JasperException: java.lang.NumberFormatException: null

代码如下:

       <%-- 
Document   : index
Created on : Mar 5, 2013, 7:21:57 PM
Author     : VIJI
       --%>

          <%@page contentType="text/html" pageEncoding="UTF-8"%>
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
               "http://www.w3.org/TR/html4/loose.dtd">

    <html>
     <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <form>
        <input type="text" name="a"></input>
        <input type="text" name="b"></input>
        <input type="submit" value="ADD"></input>
        <%!
         int a,b,c;

        %>
        <%

         a=Integer.parseInt(request.getParameter("a"));
         b=Integer.parseInt(request.getParameter("b"));
         c=a+b;

        %>
        Addition of two numbers is<%=c%>
    </form>
</body>

【问题讨论】:

标签: jsp exception


【解决方案1】:

在第一次调用中,参数ab 没有任何值,这会导致NullPointerException。使用 if 条件检查值,如下所示。

<%-- 
Document   : index
Created on : Mar 5, 2013, 7:21:57 PM
Author     : VIJI
       --%>

          <%@page contentType="text/html" pageEncoding="UTF-8"%>
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
               "http://www.w3.org/TR/html4/loose.dtd">

    <html>
     <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <form>
        <input type="text" name="a"></input>
        <input type="text" name="b"></input>
        <input type="submit" value="ADD"></input>
        <%!
         int a,b,c;

        %>
        <%
         if (request.getParameter("a") != null){
         a=Integer.parseInt(request.getParameter("a"));
         }else{a=0;}
         if (request.getParameter("b") != null){
         b=Integer.parseInt(request.getParameter("b"));
         }else{b=0;}
         c=a+b;

        %>
        Addition of two numbers is<%=c%>
    </form>
</body>

【讨论】:

    【解决方案2】:

    首先,请避免使用脚本。然后,如果您想获取 int 值,可以使用:

    int num = Integer.valueOf(request.getParameter("a"));

    int num = Integer.parseInt(request.getParameter("a")) 等随你喜欢

    哦,现在我明白了 - 你有 null。这意味着,该参数的值实际上是空的。检查空值。

    【讨论】:

      【解决方案3】:

      当您第一次通过 GET 请求页面时,所有参数都为空,除非您指定它们。所以,如果你只是 GET /index.jsp(假设这就是这个页面的名称),参数 "a" 和 "b" 都是 null 并且 Integer.parseInt() 会抛出异常。

      另外,您应该听取其他人的建议,避免在此处使用 scriptlet。

      【讨论】:

        【解决方案4】:

        您的完整 URL 路径是什么?

        我的猜测是,您没有 a & b 的参数。这导致将null 提供给Integer.parseInt()

        【讨论】:

          【解决方案5】:

          使用Integer.valueOf(); 方法进行验证

          String TempNum=request.getParameter("a");
          int num=(TempNum!=null)?Integer.valueOf(TempNum):0;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-09-19
            • 2011-01-28
            • 2014-07-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-03
            相关资源
            最近更新 更多