【发布时间】:2012-11-12 16:40:35
【问题描述】:
我正在我们的应用程序中处理异常。我使用 try catch 块来捕获代码中发生的异常,并且我还可以通过编写侦听器并在“faces-config.xml”中注册侦听器来处理超时异常。
但我在捕获构造函数中的“NullPointerException”或错误代码 500、400 等意外错误时遇到了问题。
我使用了“web.xml”中的标签
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/sc00/ErrorPage.jsp</location>
</error-page>
我尝试了很多方法来处理异常,任何人都可以帮助我找到解决方案。当我尝试处理这些异常时遇到的错误如下。
我使用的是 JSF 1.2,服务器是 websphere 8
控制台显示以下异常。
com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause Faces Servlet: javax.servlet.ServletException
E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: An exception was thrown by one of the service methods of the servlet [/sc00/ErrorPage.jsp] in application [MembershipEligibilityScreensEAR]. Exception created : [java.lang.RuntimeException: FacesContext not found
我的错误页面在 /WebContent/sc00/ErrorPage.jsp 中,ErrorPage.jsp 没有与之关联的支持 bean。
许多解决方案要求我查看 Faces Servlet 的 URL 路径,在我的 web.xml 中,servlet-mapping 如下
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
我 faces-config.xml 中的所有路径都引用 /FolderName/JspName 并且它们工作正常,即使在 Navigation.xml 中它们也工作正常。
如何将其导航到 ErrorPage.jsp,有什么方法可以让我为此类问题编写一个侦听器
抱歉发布了太多多余的问题,我是JSF的新手,我不知道StackOverflow的规则,对于我造成的问题,我深表歉意。
任何解决方案都将不胜感激。
【问题讨论】:
-
这不是 JSF 问题,而是通用 Java Web 应用程序。
-
您有解决上述问题的方法吗?我不明白你为什么说它不是 JSF 问题,异常显然发生在支持 bean 的构造函数中,我无法处理。
-
您可以在 JSP 中使用 NPE,如下所示:
<% String s = null; s.length(); %>。 NPE 将出现,并将打印在 JSP 中(您看到那里有 JFS 代码吗?我没有)。
标签: java jsp jsf exception-handling