我开发了一个简单的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>
答案 0 :(得分:0)
首先,请避免使用scriplets。然后,如果你想获得int值,你可以使用:
int num = Integer.valueOf(request.getParameter("a"));
或
int num = Integer.parseInt(request.getParameter("a"))
等,无论如何你喜欢
哦,现在我明白了 - 你有空。这意味着,该参数的值实际上是空的。检查空值。
答案 1 :(得分:0)
当您第一次通过GET请求页面时,除非您指定它们,否则所有参数都为null。所以,如果你只是GET /index.jsp(假设这个页面被调用),参数“a”和“b”都是null,而Integer.parseInt()抛出异常。
另外,你应该听从别人的建议,避免在这里使用scriptlet。
答案 2 :(得分:0)
您的完整网址路径是什么?
我的猜测是,你没有&amp;参数。湾这导致null
提供Integer.parseInt()
。
答案 3 :(得分:0)
在第一次调用时,您将不会获得导致a
的参数b
和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>