将 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 将变量保存到请求范围,然后您可以在每个标签中读取它们。
我在项目中使用 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 将变量保存到请求范围,然后您可以在每个标签中读取它们。