将 ArrayList 从 Struts1.3 操作传递到适当的 JSP

Passing an ArrayList from Struts1.3 action to appropriate JSP

我在项目中使用 Struts V1.3。 这是我的 Action Class,我想在执行函数中通过 request.settAttribute 发送一个 arrayList。

public class ProductAction 扩展了 Action { 私人列表 productList;

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
            Product product1 = new Product();
            product1.setProductName("productName1");
            product1.setProductCategory("productCategory1");
            product1.setProductPrice(15.33);
            product1.setProductDescription("productDescription1");

            Product product2 = new Product();
            product2.setProductName("productName2");
            product2.setProductCategory("productCategory2");
            product2.setProductPrice(15.454543);
            product2.setProductDescription("productDescription2");

            productList = new ArrayList<Product>();

            productList.add(product1);
            productList.add(product2);
            request.setAttribute("products", productList);
            return mapping.findForward("success");
}

如您所见,我想发送一个 Product 的 ArrayList,其中 Product 是一个 POJO。

这是我的 JSP 代码,我希望从操作 class 中获得“${products}”。

                    <c:forEach items="${products}" var="product">
                        <tr>
                            <td>${product.productName}</td>
                            <td>${product.productCategory}</td>
                            <td>${product.productDescription}</td>
                            <td>${product.productPrice}</td>
                        </tr>
                    </c:forEach>

我的问题是在 forEach 中我没有收到任何东西(甚至 tr 也不会出现)。 我如何确保在 JSP 中获得 ArrayList in action calss?

这是我的动作映射

<action name="product" path="/product" type="view.ProductAction" scope="session">
            <forward name="success" path="/productList.jsp" redirect="true"/>
            <forward name="failure" path="/success.jsp" redirect="true"/>
        </action>

从正向配置中删除属性 redirect="true" 它会丢失 jsp 重定向所需的属性。

如果对 jsp 没有意义,您如何确定 class 的行动?这些值由 EL 表达式计算并由 Jstl 标记呈现,因此您必须确保它们在 jsp 的范围内可访问。转发到 jsp 将变量保存到请求范围,然后您可以在每个标签中读取它们。