我已经在一个servlet中设置了一个会话变量,现在我想在稍后引用它。我可以在.jsp中引用第一个servlet重定向到的会话变量,但是在稍后尝试引用时会得到一个空指针异常。
这是我定义会话变量的地方:
HttpSession session = req.getSession();
ArrayList<Account> accountList = loginController.getAccounts(user);
session.setAttribute("accountsList", accountList);
目前它只是一个帐户的arraylist,其中包含一个帐户对象。我可以从此servlet重定向到的.jsp访问此帐户。
然而.jsp然后链接到另外的servlet,它们也使用accountlist。
if (session.getAttribute("accountsList") instanceof ArrayList && session.getAttribute("accountsList") != null) {
log.debug("===============================================:The account list isn't null");
ArrayList<Account> accountList = (ArrayList<Account>) session.getAttribute("accountsList");
for (Account temp : accountList) {
if (accountNum == temp.getAccountNumber()) {
account = temp;
}
}
}
这是其中一个servlet中的代码,当它运行时,它在for循环的开始时失败。日志语句将打印到tomcat控制台,然后显示以下错误:
显示java.lang.NullPointerException com.fdmgroup.holla.servlet.StatementServlet.doGet(StatementServlet.java:54) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
第54行是for循环定义。我和其他servlet有类似的错误。你觉得我怎么会出错,因为我可以进入tomcat会话管理员,看到账户列表不是空的,所以我不确定发生了什么。