public class AddToCart extends ActionSupport {
      /**
 * 
 */
private static final long serialVersionUID = 1L;
    public BookBean book;
public BookBean getBook() {
return book;
}
public void setBook(BookBean book) {
this.book = book;
}
@SuppressWarnings("unchecked")
public String add() throws Exception
      {       ActionContext ctx=ActionContext.getContext();
       Map session=ctx.getSession();
       HttpServletRequest request=ServletActionContext.getRequest(); 
       ArrayList booklist=(ArrayList) session.get("booklist");
       String id=  request.getParameter("bookid");
          BookDAO dao=new BookDAO();
          book=dao.lookupByid(Integer.parseInt(id)); 
          if(booklist==null){
            booklist=new ArrayList();
         booklist.add(book);
          }
          else
          {
           booklist.add(book);
          }
          session.put("booklist", booklist);
       return SUCCESS;   
      }

@SuppressWarnings("unchecked")
public String del() throws Exception
{ HttpServletRequest request=ServletActionContext.getRequest();
       String id=request.getParameter("bookid");
       ActionContext ctx=ActionContext.getContext();
    Map session=ctx.getSession();
    ArrayList booklist=new ArrayList();
    booklist= (ArrayList) session.get("booklist");
    
    try{
     BookDAO dao=new BookDAO();
     book=dao.lookupByid(Integer.parseInt(id));           booklist.remove(book);
        session.put("booklist", booklist);
        return SUCCESS;
    
        
    }catch(Exception e){
     e.printStackTrace();
    }
    return INPUT;

}

public String clear() throws Exception
{
ActionContext ctx=ActionContext.getContext();
Map session=ctx.getSession();
ArrayList booklist=new ArrayList();
booklist=(ArrayList) session.get("booklist");
if(booklist!=null)
{
booklist.clear();
}
return SUCCESS;
}


}   这是一个购物车的例子  del方法中有问题  求教高手

解决方案 »

  1.   

    ----del方法中有问题  求教高手  
    public String del() throws Exception 
    里面
    booklist.remove(book); 
            session.put("booklist", booklist); 
            return SUCCESS;加个判断(因为你没发现你那样写无论booklist.remove(book)成功不成功都会     return SUCCESS;)改下: boolean suc = booklist.remove(book);
      if(suc){
             session.put("booklist", booklist); 
            return SUCCESS;
    }
      

  2.   

    book=dao.lookupByid(Integer.parseInt(id));  
    这样得到的book跟session中的book尽管值一样,但地址不一样,是不相等的。如果你硬要删除这个对象,那你去重写equals方法与hashCode这两个方法在Book类里。