我已经上传了附件,里面有要用到的文件空指针异常如下:
java.lang.NullPointerException
com.briup.bean.ShoppingCart.addLine(ShoppingCart.java:17)
com.briup.web.servlet.AddOrderlineServlet.process(AddOrderlineServlet.java:83)
com.briup.web.servlet.AddOrderlineServlet.doPost(AddOrderlineServlet.java:61)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.briup.web.filter.EncodeFilter.doFilter(EncodeFilter.java:29)
其中com.briup.bean.ShoppingCart.addLine(ShoppingCart.java:17)代码是:
       
         else if(line.getNum()>0)com.briup.web.servlet.AddOrderlineServlet.process(AddOrderlineServlet.java:83)代码是:
      
        shoppingcart.addLine(orderline);jsp文件打开后,不管我输多少,都报这个异常,各位大哥帮帮忙,帮我找下错误在哪里,我找到头都大了,谢谢了

解决方案 »

  1.   

    如果你的17行没错的话,可能出现空指针错误的就是你的line对象为空,检查一下你的line对象怎么生成的吧
      

  2.   

    JSP代码的思路有问题,没有</form>结束标记,你的把form入在循环里边,那么将会生成很多的Form,   document.f1.num.value = document.f1.num1.value这句就会出问题了.
      

  3.   

    个人感觉我的line对象没空啊,怎么还会发生这个情况。。我上穿的servlet文件中有orderline的对象的生成,帮忙看下
      

  4.   

    按道理line应该不是null
    public void addLine(Orderline line) {
    Orderline orderline = 
    cart.get(line.getBook().getId());
    if(orderline != null) 
    orderline.setNum(orderline.getNum()+line.getNum());
    else if(line.getNum()>0)
    cart.put(line.getBook().getId(), line);
    }要不然Orderline orderline = cart.get(line.getBook().getId());在这句就应该报错了.
      

  5.   

    form不该在循环里面吗?还有不知道为什么myeclipse中不能加form结束标记,一加就报错
      

  6.   

    package com.briup.bean;/**
     * Orderline generated by MyEclipse - Hibernate Tools
     */public class Orderline  implements java.io.Serializable {
        // Fields         private Long id;
         private Book book;
         private Orderform orderform;
         private Long num;
        // Constructors    /** default constructor */
        public Orderline() {
        } /** minimal constructor */
        public Orderline(Long num) {
            this.num = num;
        }
        
        /** full constructor */
        public Orderline(Book book, Orderform orderform, Long num) {
            this.book = book;
            this.orderform = orderform;
            this.num = num;
        }   
        // Property accessors    public Long getId() {
            return this.id;
        }
        
        public void setId(Long id) {
            this.id = id;
        }    public Book getBook() {
            return this.book;
        }
        
        public void setBook(Book book) {
            this.book = book;
        }    public Orderform getOrderform() {
            return this.orderform;
        }
        
        public void setOrderform(Orderform orderform) {
            this.orderform = orderform;
        }    public Long getNum() {
            return this.num;
        }
        
        public void setNum(Long num) {
            this.num = num;
        }
       
    }
      

  7.   

    那就是你的num为空了,还以为是个int,如果是Long对象那就是这个为空了
      

  8.   

    num我已经在servlet中强行转换过了,不是空的
      

  9.   

    仔细看了一下你的程序看看你AddOrderlineServlet.java的中这句
    orderline.setNum((Long.getLong(num)));
    你看看Long.getLong中参数的意义就知道了,这个并不是字符串转Long的方法。所以你这个永远是空