Java ApplicationDispatcher异常
每当我尝试使用从我的Java ApplicationDispatcher异常,java,servlets,Java,Servlets,每当我尝试使用从我的doGet方法调用的这个分派方法重定向到某个页面时,我都会得到以下异常。我不知道为什么 账户控制器servlet protected void dispatch(HttpServletRequest request, HttpServletResponse response, String page) throws javax.servlet.ServletException, java.io.IOException {
doGet
方法调用的这个分派方法重定向到某个页面时,我都会得到以下异常。我不知道为什么
账户控制器servlet
protected void dispatch(HttpServletRequest request,
HttpServletResponse response, String page)
throws javax.servlet.ServletException, java.io.IOException {
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher(page);
try {
dispatcher.forward(request, response);
} catch (java.lang.NullPointerException e) {
System.out.println("NullPointerException: attribute expected in view");
}
}
错误消息
java.lang.NullPointerException
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
controller.AccountController.dispatch(AccountController.java:91)
controller.AccountController.doExecute(AccountController.java:72)
controller.AccountController.doGet(AccountController.java:34)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
java.lang.NullPointerException
org.apache.jsp.content.edit_jsp._jspService(edit_jsp.java:109)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
controller.AccountController.dispatch(AccountController.java:91)
controller.AccountController.doExecute(AccountController.java:72)
controller.AccountController.doGet(AccountController.java:34)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
在调用方法时检查页面字符串的值
getServletContext().getRequestDispatcher(第页)
返回null,所以当您尝试在dispatcher上向前调用时,您会得到一个NPE
我可能会怀疑页面字符串是空的,或者它不是您在方法中所认为的内容。您必须检查
RequestDispatcher=getServletContext()
.getRequestDispatcher(第页)代码>返回null
或不返回,因为
This method returns `null` if the servlet container cannot return a
RequestDispatcher.
类似以下代码:
try {
if(dispatcher!=null){
dispatcher.forward(request, response);
}
} catch (java.lang.NullPointerException e) {
System.out.println("NullPointerException: attribute expected in view");
}
我发现了NullPointerException背后的原因:servlet和JSP中的请求参数不匹配。JSP需要一个不存在的参数,以便触发异常
Servlet:
request.setAttribute("Account", currentClient);
request.setAttribute("RentFilmList", rentFilmList);
dispatch(request, response, ApplicationRessource.getInstance()
.getAccountPage());
JSP
<%
ClientBean client = (ClientBean)request.getAttribute("Account");
ArrayList<FilmBean> rentFilmList = (ArrayList<FilmBean>)request.getAttribute("RentFilmList");
%>
nope,page参数包含一个包含正确jsp文件的字符串。.getRequestDispatcher(page)
没有返回一个dispatcher。因此,我不得不认为它要么不喜欢你的论点,要么它无法从jsp文件中获取调度程序
和getServletContext()。getRequestDispatcher(第页)
如果您确信dispatcher
不是空的,请检查以确保getServletContext()
没有以某种方式返回空值。第页的值是多少?项目结构中是否有与该页面匹配的有效页面?检查键入@JFB是否尝试了上述代码。。?你也有同样的例外吗?@Sumit,是的,我有。。。我发现这个错误发生在视图需要一个属性但从未发送到视图时,反之亦然。异常发生在JSP内部:org.apache.JSP.content.edit\u JSP.\u JSP服务(edit\u JSP.java:109)
。。。显示代码。