最近练习书上案例,用struts2标签库获取session中键值的时候遇到了一些问题,不知道如何迭代session中的map型对象。
//CartItem.java
public class CartItem extends ActionSupport{
private Book book;
private Integer quantity;
private BigDecimal price; //省略getter setter
}
//Book.java
public class Book {
private Integer bid;
private String author;
private String title;
private String isbn;
private BigDecimal price; //省略getter setter
}
//OrderAction.java
public String addOrder() { //添加订单
//获取session中的user信息和cart订单信息
OrderDao orderDao = new OrderDao();
OrderitemDao itemDao = new OrderitemDao();
Orderitem orderitem;
//存放于order订单中
Order order=new Order();
order.setUserinfo(user);
order.setUserId(user.getUserId());
order.setTotal((Double) session.get("total"));
order.setAddress(address);
order.setZipcode(getZipcode());
try {
orderDao.add(order);
CartItem item;
Set keys = cart.keySet();
if(keys !=null){
Iterator iterator = keys.iterator();
while(iterator.hasNext()){
Object key = iterator.next();
item = (CartItem) cart.get(key);
orderitem = new Orderitem();
orderitem.setBooks(item.getBook());
orderitem.setOrder(order);
orderitem.setQuantity(item.getQuantity().doubleValue());
itemDao.add(orderitem);
}
}
//......
}
在jsp中获取session中的map对象时,用value.属性值,
若要获取的对象不止一层关系,则用value.子对象类名.子对象属性名
注意此处的book是子属性的类名而不是action中的对象名
<s:iterator value="#session.allcart" id="c">
<tr>
<td><s:property value="value.book.title"/></td>
<td><s:property value="value.book.price"/></td>
<td><s:property value="value.quantity"/></td>
<td><s:property value="value.price"/></td>
</tr>
</s:iterator>