在表单提交时将ArrayList从jsp传递到servlet

时间:2014-04-14 12:44:08

标签: jsp servlets

我试图在将表单提交给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对象,我该怎么办?

1 个答案:

答案 0 :(得分:1)

您将获得NullPointerException,因为

request.getAttribute("allproducts");

返回null

您在al.get(0)对象上调用方法null


您为何获得al null

当您提交表单时,新请求会被提交,从而导致您的旧request对象刷新。新的request对象不包含您在JSP上设置的数组列表。


NullPointerException

的Oracle文档
public class NullPointerException
             extends RuntimeException

当应用程序在需要对象的情况下尝试使用null时抛出。其中包括:

  
      
  • 调用null对象的实例方法。
  •   
  • 访问或修改空对象的字段。
  •   
  • 将null的长度视为数组。
  •   
  • 访问或修改null的插槽,就像它是一个数组一样。
  •   
  • 抛出null,就好像它是一个Throwable值。
  •   

旁注