gpt4 book ai didi

jsf - 如何使用自定义异常处理程序处理 javax.el.PropertyNotFoundException

转载 作者:行者123 更新时间:2023-12-01 04:04:18 25 4
gpt4 key购买 nike

我尝试了 omniFaces 的 AjaxExceptionHandler(非常有用)并将其配置为捕获 java.lang.Throwable以及源自各种请求(不仅是 ajax 请求)的异常。

它工作得很好,但它没有捕捉到 javax.el.PropertyNotFoundException当开发人员拼错 EL 表达式时。

所以问题是:如何处理javax.el.PropertyNotFoundExceptionExceptionHandlerFactory JSF2的机制?

最佳答案

FullAjaxExceptionHandler 应该可以处理。您的具体问题可能是因为您有一个相对较大的页面,它溢出了 Facelets 的默认缓冲区大小 2KB,因此在抛出异常时已经提交了响应。提交响应时,响应的一部分已经发送到客户端。有没办法取回已发送的字节并显示带有错误页面的新响应。不使用 ajax 时,您会遇到完全相同的问题。该异常将被记录下来,并且客户端将卡在一个半生不熟的页面上。

您可能希望将默认响应缓冲区大小增加到最大 HTML 响应的大小。这样,在第一个字节发送到客户端之前,将在服务器的内存中生成并完全缓冲响应。您可以通过 javax.faces.FACELETS_BUFFER_SIZE 设置它web.xml 中的上下文参数以字节为单位的缓冲区大小作为值。以下示例将其设置为 64KB。

<context-param>
<param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>
<param-value>65535</param-value>
</context-param>

您可能只想在开发/测试环境中设置它,以便可以发现 View 端的任何错误,并且实时环境可以继续使用默认缓冲区大小来节省服务器内存。

关于jsf - 如何使用自定义异常处理程序处理 javax.el.PropertyNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com