我将Struts V1.3用于项目。 这是我的Action类,我想通过execute函数中的request.settAttribute发送一个arrayList。
公共类ProductAction扩展Action { private List productList;
fieldEditColumn.setCellValueFactory(cellData -> cellData.getValue().editToolProperty());
fieldEditColumn.setCellFactory(p -> new ColumnEditCell(......));
fieldDeleteColumn.setCellFactory(p -> new ColumnDeleteCell(.....));
fieldDeleteColumn.setCellValueFactory(cellData -> cellData.getValue().deleteProperty());
public class ColumnEditCell extends TableCell<ModelFieldTableEntry, Boolean> {
private Button cellButton;
public ColumnEditCell(....) {
.....
initializeHandleEvent();
}
private void initializeHandleEvent() {
cellButton = new Button();
cellButton.setGraphic(IconUtils.createIcon(FontAwesomeIcon.EDIT));
cellButton.setOnAction(t -> {
.....
});
}
@Override
protected void updateItem(final Boolean t, final boolean empty) {
super.updateItem(t, empty);
if (!empty) {
setItem(t);
setGraphic(cellButton);
}
}
}
如您所见,我想发送一个产品的ArrayList,其中Product是POJO。
这是我希望从Action类获得“$ {products}”的JSP代码。
@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");
}
我的问题是,在forEach我没有收到任何东西(甚至tr也不会出现)。 我怎样才能确保在JSP中获取ArrayList in action?
这是我的动作映射
<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>
答案 0 :(得分:1)
从转发配置中删除属性redirect="true"
,它会丢失jsp重定向所需的属性。
如果没有动作课,你怎么能保证它?对jsp有意义吗?这些值由EL表达式计算并由Jstl标记呈现,因此您必须确保它们可以在jsp的范围内访问。转发到jsp会将变量保存到请求范围,然后您可以在每个标记中读取它们。