【问题标题】:When an exception is thrown by an action method, it appears as PropertyNotFoundException当操作方法抛出异常时,它会显示为 PropertyNotFoundException
【发布时间】:2011-11-13 20:44:07
【问题描述】:

我们的应用程序是基于 JSF2 的,我们正在为此设计一个异常处理。我尝试使用faces-config.xml中配置的JSF2异常处理框架。

当我从支持 bean 中抛出一个空指针(在 Facelets 页面中提到)时,它会以 javax.el.PropertyNotFoundException 的形式进入异常处理函数,并且它没有任何其他堆栈跟踪。

有什么方法可以得到异常的确切原因和堆栈跟踪吗?

【问题讨论】:

    标签: exception-handling jsf-2 facelets


    【解决方案1】:

    当从复合组件内部调用操作方法时会发生这种情况。这已报告为 JSF issue 1806,计划在 JSF 2.2 中修复。

    到目前为止,还没有办法在异常处理程序中找到根本原因,因为它已经完全被吞没了。最好的办法是使用单独的记录器,或者作为一种变通的解决方法,自己将异常作为请求属性传递。

    【讨论】:

    • 感谢 BalusC,知道 JSF2.2 何时发布。关于 jsf 框架的记录器的任何建议...
    • 根据链接的 jsf 问题,自 2.0.4-b11 Fix Version/s: 2.0.4-b11, 2.1.10, 2.2.0-m04 起已修复此问题@
    【解决方案2】:

    启用开发模式通常会提供更好的错误信息。

    将以下内容添加到您的 web.xml。

    <context-param>
       <param-name>javax.faces.PROJECT_STAGE</param-name>   
       <param-value>Development</param-value>
    </context-param>
    

    但是你应该在你的作品中关闭它。

    【讨论】:

    • 我们确实有 javax.faces.PROJECT_STAGE 作为 web.xml 中的开发。但它仍然显示为“facesexception”而不是实际异常,是否需要设置任何其他配置。
    • 你应该检查 BalusC 的错误链接。但是,您说的是支持 bean 而不是复合组件。当我们遇到问题时,我们通常会得到我们的堆栈跟踪。
    • 有没有办法在一个地方获取堆栈跟踪。
    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多