jsp购物车中的小问题,我怀疑是StringBuffer 的 append方法的问题,但又可能不是,看下代码吧。

Cartcart=(Cart)request.getSession().getAttribute("cart");StringBufferproDetail=newStr... Cart cart = (Cart)request.getSession().getAttribute("cart");
StringBuffer proDetail = new StringBuffer();

if(cart != null && cart.getAllProducts().size() > 0)
{
Collection list = cart.getAllProducts();
Iterator it = list.iterator();
while(it.hasNext())
{
ShopCart item = (ShopCart)it.next();
ProductBean product = item.getProduct();
proDetail.append("<tr>" + "<td>" + product.getId() + "</td>" +"<td>" + product.getName() + "</td>" +"<td>" + product.getDescription() + "</td>" +"<td>" + product.getPrice() + "</td>" + "<td>" + item.getCount() + "</td>" + "<td>" + product.getPrice()*item.getCount() + "</td>" + "<td>" + "<a href='DeleteServlet?itemId=" + product.getId() + "'>删除该商品</a></td></tr>");

}
}
else
{
proDetail.append("<tr><td>您的购物车中暂时没有物品!</td></tr>");
}

上面这个是显示的,用DeleteServlet?itemId=product.getId()来调用下面的Servlet
response.setContentType("text/html;charset=utf-8");
String id = request.getParameter("itemId");
Cart cart = (Cart)request.getSession().getAttribute("cart");

cart.removeProduct(id);

request.getSession().setAttribute("cart", cart);

request.getRequestDispatcher("CartList.jsp").forward(request, response);

System.out.println(id);

最下面的是Cart中的removeProduct方法
public void removeProduct(String id)
{
if(itemList.containsKey(id)){
itemList.remove(id);
}
}

请问为什么我点击删除商品后,页面虽然跳转回来了,但是删不掉,想删掉的数据依然存在,是不是append的原因?但是想想又不是啊,因为转发回来了,页面重新执行了~~请问原因在哪呢?
展开
 我来答
百度网友bdea8e89e
2011-06-06 · TA获得超过314个赞
知道答主
回答量:248
采纳率:0%
帮助的人:184万
展开全部
怎么可能是append的原因呢?
这个是你的remove方法的问题。首先我想问这个itemList是个怎么样的List
根据你containsKey的方法,我想这一定是一个Map<String, Item>。所以你删除的是这个map里面的entry,但是你遍历的是Collection list = cart.getAllProducts();你觉得你在remove方法中有对这个对象做过处理了吗?
更多追问追答
追问
ShopCart item = (ShopCart)it.next();
ProductBean product = item.getProduct();

上面在while循环中不是有改了吗?
追答
我说的重点是remove方法,你remove方法里面的itemList是map吗?你遍历的是Set对象吗?他们是同一个对象吗?你remove了map,你有同时remove SET的对象吗
klz9081wg
2011-06-07 · TA获得超过467个赞
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:411万
展开全部

按照执行顺序来 结果↓
buffer.insert(0,100); 100
buffer.insert(0,2.5F); 2.5100
buffer.insert(3,'*'); 2.5*100
buffer.insert(0,250.0D); 250.02.5*100
buffer.insert(5,"is equal to"); 250.0 is equal to 2.5*100

buffer.append('')在字符串尾部加空格

其实你只要单步调试就知道为什么了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式