[英]Exception 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.