【问题标题】:Passing ArrayList from jsp to servlet on form submit在表单提交时将 ArrayList 从 jsp 传递给 servlet
【发布时间】:2014-04-14 12:44:07
【问题描述】:

我正在尝试在向 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 对象,我该怎么办?

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

    你得到NullPointerException是因为

    request.getAttribute("allproducts");
    

    返回null

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


    你为什么得到alnull

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


    NullPointerException 的 Oracle 文档

    public class NullPointerException
                 extends RuntimeException
    

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

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

    旁注

    【讨论】:

    • 我想在servlet中使用jsp的araylist,你能告诉我该怎么做吗?
    • @user3471460 :迭代数组列表并创建hidden 字段。为每个隐藏字段赋予相同的名称。在使用request.getParameterVales("hidden_name"); 访问隐藏字段的servlet 中,它会返回您的数组。从数组中,您可以在 servlet 中创建数组列表。 w3.org/TR/html-markup/input.hidden.htmlw3.org/wiki/HTML/Elements/input/hidden
    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2013-11-15
    • 2012-10-22
    • 2014-03-16
    • 2010-12-16
    • 2015-01-18
    • 2014-05-02
    • 2017-03-18
    相关资源
    最近更新 更多