spring的例子jpetstore,是怎样创建购物车的?请高手解答!200分相送
挑大梁 2006-11-15 06:25:52 如题:
看了jpetstore用struts做control例子,不知道是在哪为不同用户
(即使没有登录的用户)创建的购物车。向购物车量加商品我知道。
请解答是在哪或什么机制创建的购物车,最好贴出详细代码,给予明示。
以下为AddItemToCartAction代码:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
CartActionForm cartForm = (CartActionForm) form;
Cart cart = cartForm.getCart();
String workingItemId = cartForm.getWorkingItemId();
if (cart.containsItemId(workingItemId)) {
cart.incrementQuantityByItemId(workingItemId);
}
else {
// isInStock is a "real-time" property that must be updated
// every time an item is added to the cart, even if other
// item details are cached.
boolean isInStock = getPetStore().isItemInStock(workingItemId);
Item item = getPetStore().getItem(workingItemId);
cartForm.getCart().addItem(item, isInStock);
}
return mapping.findForward("success");
}
cart.java文件
public class Cart implements Serializable {
/* Private Fields */
private final Map itemMap = Collections.synchronizedMap(new HashMap());
private final PagedListHolder itemList = new PagedListHolder();
/* JavaBeans Properties */
public Cart() {
this.itemList.setPageSize(4);
}
public Iterator getAllCartItems() { return itemList.getSource().iterator(); }
public PagedListHolder getCartItemList() { return itemList; }
public int getNumberOfItems() { return itemList.getSource().size(); }
/* Public Methods */
public boolean containsItemId(String itemId) {
System.out.println("itemMap----> "+itemMap);
return itemMap.containsKey(itemId);
}
public void addItem(Item item, boolean isInStock) {
CartItem cartItem = (CartItem) itemMap.get(item.getItemId());
if (cartItem == null) {
cartItem = new CartItem();
cartItem.setItem(item);
cartItem.setQuantity(0);
cartItem.setInStock(isInStock);
itemMap.put(item.getItemId(), cartItem);
itemList.getSource().add(cartItem);
}
cartItem.incrementQuantity();
}