用session写购物车不能删除商品 虽然不知道你这样写的目的,单就你的代码入手的话可以这样优化:用倒序循环方式操作就行了for(int i=0;i<single.size();i++)//改为for(int i=single.size()-1; i >= 0; i--) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 single.remove(i);操作这个list 吧并没有修改session中的值 吧?你最后加个。session.setAttribute("goodslist",single); 试试 lz这种删除方式会导致删除不了全部元素,因为你删除了元素,Arraylist的长度变小了,索引也会改变,但是迭代的下标没有跟着变小。可以这样写:for(int i=0;i<single.size();i++){ShopCar goods=(ShopCar)single.get(i);if(goods.getGoodsname().equals(name)&&goods.getUsername().equals(username)){single.remove(i);--i;//删除了元素,迭代的下标也跟着改变}再一点,删除操作完成之后再重新放置一遍session 1.把single.size拿出来赋给一个变量2.你删除完不放session,那session里面岂不是还是原来的list int a = single.size();for(int i=0;i<a;i++){}最后再把删完的list放如sessionsession.setAttribute("",xx); 我原先是重新写入了session中,可是还是没有用 public List<FlightPrice> DeepCopy(List<FlightPrice> listAll) throws IOException, ClassNotFoundException{ List<FlightPrice> list=new ArrayList<FlightPrice>(); ByteOutputStream byteout=new ByteOutputStream(); ObjectOutputStream out=new ObjectOutputStream(byteout); out.writeObject(listAll); ByteArrayInputStream bytein=new ByteArrayInputStream(byteout.getBytes()); ObjectInputStream in=new ObjectInputStream(bytein); list=(List<FlightPrice>) in.readObject(); list.toString().getBytes(); return list; }先把session里面的list取出来序列化复制为list2,然后修改list2,在把list2放进session就行了 谢谢大家,找到了问题。我将goodsname以另外一种方式提交就行了 java servlet 单元测试问题?? JSP中,调用了JS方法,然后跳转,JS方法不执行。怎么办? 如题:现在javaWEB开发的薪水在一个什么样子的范围? struts中,在action里面返回对话框 请推荐一本 入门级 的 AJAX 书籍! <html:radio>的初始化问题 大家看看这句,是什么意思 使用HTTP POST的方式模拟FORM提交数据 !!sos!!菜鸟的问题,在线等你的回答~ 编译类之后,session里的值就没了 为什么loginID传不到下个页面啊?代码如下 关于WEB开发中保存会话的问题?
可以这样写:
for(int i=0;i<single.size();i++)
{
ShopCar goods=(ShopCar)single.get(i);
if(goods.getGoodsname().equals(name)&&goods.getUsername().equals(username))
{
single.remove(i);
--i;//删除了元素,迭代的下标也跟着改变
}
再一点,删除操作完成之后再重新放置一遍session
2.你删除完不放session,那session里面岂不是还是原来的list int a = single.size();
for(int i=0;i<a;i++){
}
最后再把删完的list放如session
session.setAttribute("",xx);
List<FlightPrice> list=new ArrayList<FlightPrice>();
ByteOutputStream byteout=new ByteOutputStream();
ObjectOutputStream out=new ObjectOutputStream(byteout);
out.writeObject(listAll);
ByteArrayInputStream bytein=new ByteArrayInputStream(byteout.getBytes());
ObjectInputStream in=new ObjectInputStream(bytein);
list=(List<FlightPrice>) in.readObject();
list.toString().getBytes();
return list;
}
先把session里面的list取出来序列化复制为list2,然后修改list2,在把list2放进session就行了