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