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)
。。。显示代码。