今天在学习过程中对struts2中超链接的传参问题产生了一些疑惑,不明白jsp中的超链接如何将参数传到Action方法中去的。
<s:iterator value="categorys" var="p">
<tr>
<td>${p.id}</td>
<td>${p.name}</td>
<td><a href="listProduct?category.id=${p.id}">products</a></td>
<td><a href="editCategory?category.id=${p.id}">edit</a></td>
<td><a href="deleteCategory?category.id=${p.id}">delete</a></td>
</tr>
</s:iterator>
ProductDAO pdao = new ProductDAO();
CategoryDAO cdao = new CategoryDAO();
Product product;
List<Product> products;
List<Category> categorys;
Category category; public String list() {
categorys = cdao.listCategory();
if (null != category) {
category = cdao.get(category.getId());
products = new ArrayList(category.getProducts());
return "listJsp";
} else {
products = pdao.listProduct();
return "listJsp";
}
}
在下面一段java代码中,我并未实例化category,但所给代码中却有判断对象为空的语句,我不禁疑惑category对象是什么时候实例化的。
后查阅了相关问题,依旧没有找到原因,只能大胆猜测在超链接中需要先将所用到的对象设置出来,这样就免去了实例化的过程,将当前product的id通过超链接传入,然后调用CategoryAction中的get与set将id设置给category对象,便于通过某一商品的id查到该id所属类别下的所有商品信息。