【问题标题】:JSF 1.2 Exception HandlingJSF 1.2 异常处理
【发布时间】: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,如下所示:&lt;% String s = null; s.length(); %&gt;。 NPE 将出现,并将打印在 JSP 中(您看到那里有 JFS 代码吗?我没有)。

标签: java jsp jsf exception-handling


【解决方案1】:
 java.lang.RuntimeException: FacesContext not found 

当您通过与 FacesServlet(负责创建 FacesContext 的人)的 URL 模式不匹配的 URL 请求包含 JSF 组件的 JSP 页面时,就会发生这种情况。

您需要更改错误页面位置以匹配FacesServlet 中定义的web.xml 的URL 模式。根据您在该主题上的duplicate questions,这是其中的*.faces,因此应该按照以下方式设置错误页面位置,正如我在您在该主题上的first question 的评论中所建议的那样。

<location>/sc00/ErrorPage.faces</location>

【讨论】:

  • 我试过了,但它不起作用。我真的尝试了一百万次,我还创建了一个名为“error.html”的 html 页面,但它不起作用。我请你看看stackoverflow.com/questions/13353198/…。在这个问题中,我还发布了 web.xml,以便您查找是否有任何配置错误。我有很多 JSF 2 的解决方案,但是 JSF1.2 没有很多针对这种情况的解决方案。您能否建议我有什么方法可以编写侦听器或过滤器。重复问题的原因是我没有得到解决问题的答案
  • Faces Servlet*.facesFaces Servlet/faces/* 这是 web.xml 中的两个 URL 模式
  • 在使用error.html 而不是带有JSF 组件的JSP 页面时,您不可能得到java.lang.RuntimeException: FacesContext not found。请告诉您使用 error.html 时遇到的新错误。你绝对不应该忽略错误,就好像它们是装饰一样。至于每次都问同样的问题,这不是这里的工作方式。如果您没有得到(满意的)答案,只需编辑和改进您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 2011-09-06
  • 2010-10-02
  • 2011-09-16
  • 1970-01-01
  • 2013-01-16
  • 2011-12-26
相关资源
最近更新 更多