【问题标题】:Send ArrayList<Product> from Servlet and receive in JSP从 Servlet 发送 ArrayList<Product> 并在 JSP 中接收
【发布时间】:2017-09-15 09:08:51
【问题描述】:

这是我的 servlet 代码。这里,productsArrayList&lt;Products&gt; 的一个对象,我将它发送到一个 JSP 文件。 requestHttpServletRequest 类型的对象。

request.setAttribute("listOfProducts", products);
request.getRequestDispatcher("UpdateProduct.jsp").forward(request, response);

在我的 JSP 中,我尝试接收这个。

ArrayList<Products> product = request.getAttribute("listOfProducts");

它显示了这个错误

类型不匹配:无法从 Object 转换为 ArrayList

然后我尝试了这个

ArrayList<Products> product = (ArrayList<Products>) request.getAttribute("listOfProducts");

然后我收到了这个警告

在这一行找到多个注释: - 类型安全:从对象到未经检查的强制转换 数组列表 - 类型不匹配:无法从 Object 转换为 数组列表

【问题讨论】:

  • 请求是什么样的对象?
  • 尝试先实例化productArrayList&lt;Products&gt; product = new ArrayList&lt;Product&gt;();,然后从您的request 获取它并使用演员:product = (ArrayList&lt;Product&gt;) request.getAttribute("listOfProducts");
  • @Asew 这没有任何意义。您建议创建对象 ant 然后将其丢弃。它不会解决投射问题。
  • @user1766169 HttpServletRequest 对象是请求
  • 请在ArrayList&lt;Products&gt; product = (ArrayList&lt;Products&gt;) request.getAttribute("listOfProducts") 声明之后显示JSP 代码。十多年来,JSP 中的 Java scriptlet 一直没有被认为是好的实践。使用 JSTL 有更好的方法。

标签: java jsp servlets arraylist


【解决方案1】:

以下是现代(环保!)的方法:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:jsp="http://java.sun.com/JSP/Page"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
<head>
    ...
</head>
<body>
    ...
    <c:forEach items="${listOfProducts}" var="product">
        <tr><td>${product.id} </td>
            <td>${product.name} </td>
            <td>${product.whatever} </td></tr>
    </c:forEach>
    ...
</body>
</html>

JSP 的文件扩展名必须是.jspx

页面中不需要java代码。

【讨论】:

  • 我的要求是使用 scriplet。但主要问题是我无法解析该对象
  • 在这种情况下,您必须提供运行时环境的详细信息,包括服务器供应商/版本和 java 版本。
  • 我使用的是 Tomcat 7.0.56 和 jdk1.8.0_131
猜你喜欢
  • 2021-08-03
  • 2012-11-11
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多