【问题标题】:Servlet send arraylist to JSP as request attribute [duplicate]Servlet将arraylist作为请求属性发送到JSP [重复]
【发布时间】:2014-03-15 04:06:13
【问题描述】:

我正在尝试将 ArrayList 从 servlet 发送到 JSP 页面。在 Servlet 中:

List<ItemObj> myList = new ArrayList<ItemObj>();   
req.setAttribute("list", myList);
req.getRequestDispatcher("page.jsp").forward(req,resp);

在 JSP 中:

<% List<ItemObj> myList = (ArrayList<ItemObj>) request.getParameter("list"); %>

但是,我不断收到错误消息:无法从字符串转换为列表。我找到了表明我可以这样投射的来源:

how to send ArrayList from jsp to servlet

Send array of objects from servlet to JSP

我做错了什么?谢谢!

【问题讨论】:

  • setAttributegetParameter。看出什么问题了吗?
  • 另外,从不使用脚本。
  • 很好,抱歉。我是 JSP 的新手,仍然试图很好地理解两者之间的区别。谢谢!
  • @SotiriosDelimanolis,为什么我不应该使用 scriptlet?
  • 非常不鼓励这样做,原因已解释here

标签: java jsp servlets


【解决方案1】:

您将list 设置为请求属性并将其作为请求参数取回

使用&lt;% List&lt;ItemObj&gt; myList = (ArrayList&lt;ItemObj&gt;) request.getAttribute("list"); %&gt;

【讨论】:

    【解决方案2】:

    而不是request.getParameter 使用

    &lt;% List&lt;ItemObj&gt; myList = (ArrayList&lt;ItemObj&gt;) request.getAttribute("list"); %&gt;

    request.getParameter用于获取表单参数。

    【讨论】:

      【解决方案3】:

      Sotirious 恰到好处。您需要调用 getAttribute。

      但除此之外,您应该了解属性的范围: 它的范围是 (i) 页面、(ii) 请求、(iii) 会话还是 (iv) 应用程序?

      我不知道默认范围,但您可能想研究一下。

      【讨论】:

      • 我打算在这里用于页面范围。我猜那个属性是一个糟糕的选择?
      • 我认为 setAttribute 是正确的调用。只要确保你的范围是正确的。
      【解决方案4】:

      您需要request.getAttribute() 而不是request.getParameter()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 2012-10-05
        • 2013-04-28
        • 2014-02-25
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        相关资源
        最近更新 更多