我在一个项目中使用StrutsV1.3。这是我的Action类,我想在execute函数中通过request.settAttribute发送一个arrayList。
公共类操作扩展了ProductAction {私有列表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");
}如你所见,我想发送一个产品的ArrayList,其中产品是一个POJO。
下面是我的JSP代码,我希望从Action类中获得"${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调用?
这是我的动作映射
<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>发布于 2018-01-18 07:35:26
从转发配置中删除属性redirect="true",这会使jsp重定向所需的属性丢失。
如果动作类对jsp没有意义,你怎么能保证它呢?这些值由EL表达式计算并由Jstl标记呈现,因此必须确保它们在jsp作用域中是可访问的。转发到jsp将变量保存到request作用域,然后您可以在for each标记中读取它们。
https://stackoverflow.com/questions/48305489
复制相似问题