NullPointerException กับ JSP/Servlet

ฉันมี doGet ของฉันเป็น:

protected void doGet(HttpServletRequest request, 
        HttpServletResponse response)
        throws IOException, ServletException{


    String resourceIDstr = request.getParameter("ResourceID");
    int resourceID = Integer.valueOf(resourceIDstr);

    Resource resourceToLend  =  ResourceModule.getInstance()
                                .getResourceByID(Integer.valueOf(resourceID));



    request.setAttribute("resourceToLent", resourceToLend);

    request.setAttribute("innerTab", "LendResource.jsp");
    getServletConfig().getServletContext()
                    .getRequestDispatcher("/WEB-INF/jsp/admin/resourcelend.jsp")
                    .forward(request, response);
}

เมื่อใดก็ตามที่ฉันส่งต่อคำขอ GET ใด ๆ ไปยังเซิร์ฟเล็ตนี้ มันจะไม่ส่งต่อคำขอไปยัง JSP และจะส่งข้อยกเว้นเป็น:

HTTP Status 500 - org.apache.jasper.JasperException: 
java.lang.NullPointerException

สิ่งที่แปลกคือ JSP นี้ถูกใช้โดยเซิร์ฟเล็ตอื่นโดยไม่มีปัญหาใดๆ และเซิร์ฟเล็ตนี้ก็มีข้อยกเว้น ฉันกำลังพยายามค้นหาสาเหตุที่เป็นไปได้สำหรับข้อยกเว้น

ขอบคุณล่วงหน้า.

อัปเดต:

org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
servlet.TempResourceLendServlet.doGet(TempResourceLendServlet.java:37)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
org.apache.jsp.WEB_002dINF.jsp.admin.resourcelend_jsp._jspService(resourcelend_jsp.java:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
servlet.TempResourceLendServlet.doGet(TempResourceLendServlet.java:37)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.NullPointerException
org.apache.jsp.WEB_002dINF.jsp.admin.LendResource_jsp._jspService(LendResource_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
org.apache.jsp.WEB_002dINF.jsp.admin.resourcelend_jsp._jspService(resourcelend_jsp.java:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
servlet.TempResourceLendServlet.doGet(TempResourceLendServlet.java:37)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

person suenda    schedule 13.01.2013    source แหล่งที่มา
comment
มันเป็นข้อยกเว้นใน JSP ดังนั้นให้เพิ่มเนื้อหา JSP และสแต็คเทรซ   -  person asgoth    schedule 14.01.2013
comment
คุณได้เริ่มต้น bean ของคุณแล้วหรือยัง?   -  person Bohemian♦    schedule 14.01.2013
comment
btw หากต้องการรับ RequestDispatcher คุณสามารถใช้วิธี ServletRequest: request.getRequestDispatcher("/WEB-INF/jsp/admin/resourcelend.jsp").forward(request, response);   -  person informatik01    schedule 14.01.2013
comment
ฉันได้ลอง request.getRequestDispatcher() แล้ว แต่ไม่ประสบความสำเร็จ   -  person suenda    schedule 14.01.2013


คำตอบ (1)


ดังที่ asgoth กล่าวไว้ คุณควรระบุ jsp ของคุณในคำถาม แทนที่จะเป็นเซิร์ฟเล็ต

นอกจากนี้ stacktrace สาเหตุที่แท้จริงของคุณยังมีบรรทัดที่บอกว่า

org.apache.jsp.WEB_002dINF.jsp.admin.resourcelend_jsp._jspService(resourcelend_jsp.java:114)

นี่อ้างถึงเซิร์ฟเล็ตที่สร้างขึ้นโดยอัตโนมัติซึ่ง jsp ของคุณได้กลายเป็น คุณจะพบสิ่งนี้ในโฟลเดอร์งานของ Tomcat เนื่องจากเป็นการสร้างโค้ด Java อัตโนมัติ คุณจะต้องทำการแมปบางอย่าง แต่ควรอธิบายด้วยตนเองไม่มากก็น้อยว่าบรรทัด 114 อ้างถึงใน jsp ของคุณมากหรือน้อย ด้วยวิธีนี้ คุณจะสามารถค้นหาสาเหตุที่แท้จริงสำหรับตัวคุณเองได้ (ครั้งสุดท้ายที่ฉันได้เห็นไฟล์เหล่านั้น พวกเขามีความคิดเห็นที่อ้างถึงโค้ด jsp ที่เทียบเท่ากัน)

person Olaf Kock    schedule 13.01.2013