0

我开发了一个简单的 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>

4

5 回答 5

0

首先,请避免使用脚本。然后,如果你想获得 int 值,你可以使用这个:

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

int num = Integer.parseInt(request.getParameter("a"))等,无论如何你喜欢

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

于 2013-03-05T14:06:23.120 回答
0

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

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

于 2013-03-05T14:06:56.027 回答
0

您的完整 URL 路径是什么?

我的猜测是,你没有 a & b 的参数。这导致提供nullInteger.parseInt().

于 2013-03-05T14:07:00.607 回答
0

在第一次调用中,您将没有任何参数值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>
于 2013-03-05T19:33:57.940 回答
0

使用Integer.valueOf();带有验证的方法,例如

String TempNum=request.getParameter("a");
int num=(TempNum!=null)?Integer.valueOf(TempNum):0;
于 2021-12-14T14:44:55.007 回答