繁体   English   中英

ArrayList的添加方法抛出org.apache.jasper.JasperException:java.lang.NullPointerException

[英]Add method of ArrayList throws org.apache.jasper.JasperException: java.lang.NullPointerException

ArrayList的add方法在cart.jsp被调用时抛出org.apache.jasper.JasperException: java.lang.NullPointerException 请查看我的代码。 谢谢。

@Remote
public interface BookSessionBeanRemote {
    void persist(Book b);
    List<Book> getBookContent();
    Book getBook(int id);
}

@Stateful
public class CartBean implements CartBeanRemote {

Book b = new Book();
private ArrayList<Book> bk;

@PostConstruct
public void initialize()
{
    bk = new ArrayList<Book>();
}
@Override
public void addBook(Book b)throws Exception
{
    if(b==null)throw new Exception("Book is null");
    bk.add(b);
}
@Override
public void removeBook(int id)throws Exception
{
    BigDecimal bg = new BigDecimal(id);
    b.setBookid(bg);
    boolean result = bk.remove(b);
    if (result == false) 
    {
        throw new Exception("Book not in cart.");
    }
}
@Override
public ArrayList<Book> getContent()
{
    return bk;
}

}

cart.jsp

 <%! CartBeanRemote ct;  %>
        <%
                String path = (String)session.getAttribute("path");
                String bkid = (String)session.getAttribute("bookid");
                String bookname = (String)session.getAttribute("bookname");
                String author = (String)session.getAttribute("author");
                String price= (String)session.getAttribute("price");
               // out.println(path);
              //  out.println(bkid);
              //  out.println(bookname);
              //  out.println(author);
               // out.println(price);

                 BigDecimal bid = new BigDecimal(bkid);
                 BigInteger pr = new BigInteger(price);

                   if(session.isNew())
                    {
                        Context ctx = new InitialContext();
                        ct = (CartBeanRemote)ctx.lookup(CartBeanRemote.class.getName());
                        session.setAttribute("ct", ct);
                    }
                    ct = (CartBeanRemote)session.getAttribute("ct");
                    Book book = new Book();
                    book.setAuthor(author);                        
                    book.setImagepath(path);
                    book.setName(bookname);
                    book.setBookid(bid);
                    book.setPrice(pr);

                    ct.addBook(book);
                   // out.println(book.getAuthor());
                   // out.println(book.getBookid());
                   // out.println(book.getPrice());

                  //  response.sendRedirect("index.jsp");

    %>

您的代码在某处导致NullPointerException。 根据您的描述,当您尝试向其中添加某些内容时,我猜想您的ArrayList为null。

当您的代码导致NullPointerException时,JSP将捕获它,然后将其包装在JasperException中,然后再将其抛出。

看看Throwable.getCause()。 另请参见Exception的构造函数,其外观类似于Exception(String message,Throwable cause)。 在Java中,通常的做法是捕获一种类型的Exception,然后将其包装在带有其他信息的新Exception中。 在将异常传播到代码可以做一些有意义的事情之前,可能会发生多次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM