【发布时间】:2015-09-30 13:50:58
【问题描述】:
最近,我正在尝试使用 Java 会话编写购物车。我使用 List 对象来存储产品,然后存储在会话中。当用户更改产品的数量时,我使用下面的代码尝试更新会话。它确实有效,因为当我刷新页面时,购物车图标旁边显示的数字发生了变化,但我真的不知道它是如何工作的。谁能帮帮我;/?
这是用户取消特定产品时的代码,我只是从列表中删除:
List<OrderProduct> orderProductList = (ArrayList<OrderProduct>)session.getAttribute("orderProductList");
for (int i = 0; i < orderProductList.size(); i ++) {
if (orderProductList.get(i).getProduct().getId() == productID) {
orderProductList.remove(i);
}
}
我的问题是我没有这样做
session.setAttribute(...)
但是当我在jsp中检索会话时,会话中存储的对象发生了变化,它是如何工作的?
【问题讨论】:
-
什么会话?这显然不仅仅是一个 Java 问题。请说明您使用的是什么软件堆栈?
-
您在迭代
List(orderProductList.remove(i);) 时对其进行了修改。您应该为此使用Iterator。 -
@Titus 为什么我应该使用迭代器?我只是使用 for 循环。而我这样做
orderProductList.remove(i);是因为我想从列表中删除它 -
@Titus 它实际上不会以问题描述的方式失败 - 没有迭代器与集合不同步。它仍然是错误的,因为它最终会跳过列表项。
标签: java list session arraylist shopping-cart