2013-03-05 53 views
0

我開發了一個簡單的jsp頁面,其中包含兩個文本字段和一個提交按鈕以添加兩個數字。在瀏覽器編譯後,它顯示了一個錯誤: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> 

+1

[使用的JSP腳本小程序(這些'<% %>'東西),因爲標籤庫(如JSTL)和EL(表達式語言,那些'$ {}'的東西)的十年前誕生的強烈勸阻。 **在新代碼中避免scriptlets。**](http://stackoverflow.com/q/3177733/139010) – 2013-03-05 14:06:11

回答

0

在第一次通話時,您將不會有參數ab的任何值,這會導致NullPointerException。如果條件如下所示檢查值。

<%-- 
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> 
+0

感謝它的工作。非常感謝你 – 2013-03-08 16:13:12

+0

Upvote幫助你解決問題的答案。 – 2013-03-10 14:13:04

0

首先,請避免scriplets。然後,如果你想獲得的int值,你可以這樣做:

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

int num = Integer.parseInt(request.getParameter("a"))等反正你喜歡

哦,現在我明白了 - 你有空。這意味着,該參數的值實際上是空的。檢查空值。

0

當你第一次通過GET請求頁面時,除非你指定它們,否則所有的參數都是空的。因此,如果您只是獲取/index.jsp(假設這是該頁面調用的內容),參數「a」和「b」都爲null,並且Integer.parseInt()會拋出異常。

另外,您應該接受其他人的建議並避免在這裏使用scriptlets。

0

什麼是您的完整URL路徑?

我的猜測是,你沒有& b的參數。這導致提供nullInteger.parseInt()