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的原因?但是想想又不是啊,因为转发回来了,页面重新执行了~~请问原因在哪呢? 展开
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的原因?但是想想又不是啊,因为转发回来了,页面重新执行了~~请问原因在哪呢? 展开
2个回答
展开全部
怎么可能是append的原因呢?
这个是你的remove方法的问题。首先我想问这个itemList是个怎么样的List
根据你containsKey的方法,我想这一定是一个Map<String, Item>。所以你删除的是这个map里面的entry,但是你遍历的是Collection list = cart.getAllProducts();你觉得你在remove方法中有对这个对象做过处理了吗?
这个是你的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的对象吗
展开全部
按照执行顺序来 结果↓
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('')在字符串尾部加空格
其实你只要单步调试就知道为什么了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询