0

メソッドから呼び出されるこのディスパッチメソッドを使用して特定のページにリダイレクトしようとするとdoGet、次の例外が発生します。理由がわかりません!

アカウントコントローラサーブレット

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)
4

3 に答える 3

0

メソッドが呼び出されたときにページ文字列の値を確認してください。

getServletContext().getRequestDispatcher(page);はnullを返すため、ディスパッチャで転送しようとすると、NPEが発生します。

ページ文字列が空であるか、メソッドに入ったときに思ったとおりではないのではないかと思います。

于 2012-07-02T16:51:14.660 に答える
0

RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher(page);返品するnullかどうかを確認する必要があります

This method returns `null` if the servlet container cannot return a
RequestDispatcher.

getRequestDispatcher
次のコードのように:

try {
      if(dispatcher!=null){
        dispatcher.forward(request, response);
      }
    } catch (java.lang.NullPointerException e) {
        System.out.println("NullPointerException: attribute expected in view");
    }
于 2012-07-02T16:57:21.617 に答える
0

NullPointerExceptionの背後にある理由を見つけました:サーブレットとJSPで一致しないリクエストパラメータ。JSPは、例外をトリガーするために存在しないパラメーターを予期します。

サーブレット:

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");
%>
于 2012-07-09T03:08:40.053 に答える