我试图在将表单提交给servlet时从jsp页面传递arraylist对象。
jsp页面代码: -
<form action="NewServlet">
<%
ArrayList al=new ArrayList();
al.add("abc");
al.add("xyz");
request.setAttribute("allproducts", al);
%>
<input type="submit" value="Show"></form>
NewServlet代码: -
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
ArrayList al=(ArrayList)request.getAttribute("allproducts");
System.out.print(al.get(0));
}
当我运行此代码时,我在“System.out.print(al.get(0))”行获取NullPointerException
。
谁能告诉我为什么会这样?
如果我想在servlet中使用这个al对象,我该怎么办?
答案 0 :(得分:1)
您将获得NullPointerException
,因为
request.getAttribute("allproducts");
返回null
您在al.get(0)
对象上调用方法null
。
al
null
?当您提交表单时,新请求会被提交,从而导致您的旧request
对象刷新。新的request
对象不包含您在JSP上设置的数组列表。
NullPointerException
public class NullPointerException
extends RuntimeException
当应用程序在需要对象的情况下尝试使用null
时抛出。其中包括:
- 调用null对象的实例方法。
- 访问或修改空对象的字段。
- 将null的长度视为数组。
- 访问或修改null的插槽,就像它是一个数组一样。
- 抛出null,就好像它是一个Throwable值。