[code="java"]
if("remove".equals(dh)){
PurchaseActionBean pur = (PurchaseActionBean)req.getSession().getAttribute("pur");
Iterator it = pur.getMap().values().iterator();
while(it.hasNext()){
System.out.println("进来了!!");
PurchaseBean bean = (PurchaseBean)it.next();;
pur.getMap().remove(bean.getBean().getCate_id());
}
}
[/code]
为什么这样一个方法,如果我购物车有2样商品就会报500错误, 有一个商品的时候就能成功清空。
比如:有3个商品,它就得点击3次清空 才能清空,这个循环有错误吗,
求老哥们,帮忙看下。 下面有图
[quote]
while(it.hasNext()){
System.out.println("进来了!!");
PurchaseBean bean = (PurchaseBean)it.next();;
pur.getMap().remove(bean.getBean().getCate_id());
}
[/quote]
不能在遍历的时候对MAP进行增删元素的,否则你的 iterator 就出问题了。
你为什么不直接用这个呢:
[code="java"]pur.getMap().clear();[/code]
[code="java"] while (it .hasNext()) {
....
iterator.remove();
} [/code]
建议debug看看程序到底是怎样清楚购物车的,我等级太低看不出来,debug是最好的了。。。