[英]Error in jsp and servlets
堆棧跟蹤:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
org.apache.jsp.jsp.Report_jsp._jspService(Report_jsp.java:79)
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:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
至此:只需閱讀stacktrace並相應地修復null指針即可。
stacktrace的第一行應包含引起它的源代碼的行號。 打開Report.jsp
的已編譯源代碼,然后轉到該行。 它應該看起來像:
someObject.doSomething();
特別要看那里的點運算符.
用於訪問或調用某些對象實例。 這樣的代碼行上的NullPointerException
意味着someObject
實際上為null
。 它只是什么都沒有 。 您不能訪問它,也不能調用任何方法。
修復NullPointerException
所需要做的就是確保someObject
不為 null:
if (someObject == null) {
someObject = new SomeObject();
}
someObject.doSomething();
或者,如果someObject
不為null
則僅執行訪問/調用。
if (someObject != null) {
someObject.doSomething();
}
就是說,由於taglib和EL通常是NPE安全的,這表明您使用老式的scriptlet在JSP文件中編寫了原始Java代碼。 我強烈建議您不要這樣做,而只是在真實的Java類中編寫Java代碼,並使用taglibs控制頁面流和輸出,並使用EL訪問后端數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.