public ActionForward putInCart(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
ProductBiz biz = new ProductBizImpl();//得到biz对象
//获得参数serialNum
String serialNum = request.getParameter("serialNum");
//调用biz的查找方法
Product product=biz.findBySerialNum(serialNum);
//获得session
HttpSession session = request.getSession();
Cart cart = (Cart)session.getAttribute("cart"); Set<Item> items = null;
if(cart==null||cart.getItems().size()==0){
cart = new Cart();
items = new HashSet<Item>();
cart.setItems(items);
Item item = new Item();
item.setProduct(product);
item.setCount(1);
items.add(item);
}else{
items = cart.getItems();
Item item = new Item(); //判断购物车中是否已经有该商品,如果有则数量+1
Iterator it = items.iterator();
while(it.hasNext()){
Item i = (Item)it.next(); //就是这里,遍历集合有时会报异常
if(i.getProduct().getSerialNum().equals(serialNum)){ Product p = i.getProduct();
int count = i.getCount();
it.remove();
Item ii = new Item();
ii.setProduct(p);
ii.setCount(count+1);
items.add(ii);
}else{
item.setProduct(product);
item.setCount(1);
items.add(item);
}
} } session.setAttribute("cart", cart);
return mapping.findForward("ok");
}
ProductBiz biz = new ProductBizImpl();//得到biz对象
//获得参数serialNum
String serialNum = request.getParameter("serialNum");
//调用biz的查找方法
Product product=biz.findBySerialNum(serialNum);
//获得session
HttpSession session = request.getSession();
Cart cart = (Cart)session.getAttribute("cart"); Set<Item> items = null;
if(cart==null||cart.getItems().size()==0){
cart = new Cart();
items = new HashSet<Item>();
cart.setItems(items);
Item item = new Item();
item.setProduct(product);
item.setCount(1);
items.add(item);
}else{
items = cart.getItems();
Item item = new Item(); //判断购物车中是否已经有该商品,如果有则数量+1
Iterator it = items.iterator();
while(it.hasNext()){
Item i = (Item)it.next(); //就是这里,遍历集合有时会报异常
if(i.getProduct().getSerialNum().equals(serialNum)){ Product p = i.getProduct();
int count = i.getCount();
it.remove();
Item ii = new Item();
ii.setProduct(p);
ii.setCount(count+1);
items.add(ii);
}else{
item.setProduct(product);
item.setCount(1);
items.add(item);
}
} } session.setAttribute("cart", cart);
return mapping.findForward("ok");
}
it.remove(); // 应该是这里报错的可以用个 临时变量把要删除的元素 先存起来; 迭代完后,再根据临时变量进行删除操作;
似乎 我说错了; 不好意思!!
it.remove(); 是Iterator 自己实现的 同步删除方法, 所以不会出现我说的情况;你能贴一下 报错日志吗?