小弟我在做最基本的struts的网上书店,在做一个购物车(ShoppingCart),其中有一个方法addItem(ShoppingItem item),此方法是把书本对象(ShoppingItem)加入其中,书本对象中有id主要属性,书本之间靠id识别,count属性记录书本数目,书目在ShoppingCart中存放是存放在其中的一个Hashmap items中的,以id为key
public class ShoppingCart {
private HashMap items;
public void addItem(ShoppingItem item){               //往购物车里增加书本对象,或者增加某本书的数目
if(items.containsKey(item.getId())){            /*取出要加入书本的id,如果在hashmap中找到相应的编号,说明
                                                              此书在购物车中已经有了,则增加书的数目 */
((ShoppingItem)items.get(item.getId())).addCount();//根据id,从hashmap中取出对应的ShoppingItem,并加1
}else{                                         /*如果找不到相应的编号,则说明此书在购物车中不存在,
                                                      就把item加入购物车*/

items.put(item.getId(), item);
}
}public void deleteItem(ShoppingItem item){
 
((ShoppingItem)items.get(item.getId())).cutCount();




}

public Collection getItems(){
return items.values();
}我在页面表现层中调用((ShoppingCart)(request.getSession().getAttribute("cart"))).addItem(item);时出现下面的错误:type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:33)
root cause java.lang.NullPointerException
Model.ShoppingCart.addItem(ShoppingCart.java:12)
Action.AddIntoCartAction.execute(AddIntoCartAction.java:27)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:33)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
是不是说我的addItem()函数出错了?我是把购物车当作一个javabean存放在页面里了用了:<jsp:useBean id="cart" scope="session"class="Model.ShoppingCart"/>是不是不能这么用的?请帮我看看,谢谢了!
   

解决方案 »

  1.   

    报的是空指针错误,应该是request.getSession().getAttribute("cart")为null。你应该先在session里创建cart
      

  2.   

    回答楼上的,我已经用了<jsp:useBean id="cart" scope="session"class="Model.ShoppingCart"/>在页面中存放了cart了.....但不对
      

  3.   

    很明显是Model.ShoppingCart.addItem(ShoppingItem item)方法报空指针错误嘛!
    设置断点调试一下代码,看看传入的item对象是否为null!
      

  4.   

    我在item中仅仅设定了id属性,别的属性都没有设,会不会是报空指针的原因?
      

  5.   

    大哥,我可以告诉你一个方法
    以后碰到java.lang.NullPointerException 
    这样的,别去问别人
    我在学java的时候,老师跟我们说,这样的问题,只能问一次,以后别来问我,自己看看就知道了
    肯定是Model.ShoppingCart.addItem(ShoppingCart.java:12) 这个类里的12行有空指正马
    以后别再问这样的了  自己要学会调试