Jsf 2 Omnifaces FullAjaxExceptionHandler和PrimeFaces对话框

Jsf 2 Omnifaces FullAjaxExceptionHandler和PrimeFaces对话框,jsf-2,primefaces,omnifaces,Jsf 2,Primefaces,Omnifaces,我正在使用omnifaces库中的FullAjaxExceptionHandler,这一切都很好,但是我不确定如何在发生异常的页面上的PrimeFaces对话框中显示异常。 目前,我只能将用户重定向到omnifaces showcase上描述的异常页面 我现在所拥有的: <error-page> <exception-type>java.lang.RuntimeException</exception-type> <location>

我正在使用omnifaces库中的FullAjaxExceptionHandler,这一切都很好,但是我不确定如何在发生异常的页面上的PrimeFaces对话框中显示异常。 目前,我只能将用户重定向到omnifaces showcase上描述的异常页面

我现在所拥有的:

<error-page>
    <exception-type>java.lang.RuntimeException</exception-type>
    <location>/errorpages/bug.xhtml</location>
</error-page>

java.lang.RuntimeException
/errorpages/bug.xhtml
我想要的是:

<error-page>
    <exception-type>java.lang.RuntimeException</exception-type>
    <location>/currentpage.xhtml?showExceptionDialog(exception)</location>
</error-page>

java.lang.RuntimeException
/currentpage.xhtml?显示例外对话框(例外)

谢谢。

FullAjaxExceptionHandler不支持它。
FullAjaxExceptionHandler
设计用于实现与非ajax请求完全相同的行为。即根据标准Servlet API使用指定的
条目

此外,OmniFaces并不打算作为特定PrimeFaces的扩展,因此不可能使用任何PrimeFaces特定的API,如
RequestContext
FullAjaxExceptionHandler
中的4.0“对话框架”。这将使它在不使用PrimeFaces但使用不同组件库的项目中无法使用


您最好的选择确实是创建自己的异常处理程序。只要您尊重Apache许可证,就可以完全自由地接管
FullAjaxExceptionHandler
的部分源代码。另一种方法是请求创建您想要的异常处理程序并将其添加到其标准集。
FullAjaxExceptionHandler
不支持它。
FullAjaxExceptionHandler
设计用于实现与非ajax请求完全相同的行为。即根据标准Servlet API使用指定的
条目

此外,OmniFaces并不打算作为特定PrimeFaces的扩展,因此不可能使用任何PrimeFaces特定的API,如
RequestContext
FullAjaxExceptionHandler
中的4.0“对话框架”。这将使它在不使用PrimeFaces但使用不同组件库的项目中无法使用


您最好的选择确实是创建自己的异常处理程序。只要您尊重Apache许可证,就可以完全自由地接管
FullAjaxExceptionHandler
的部分源代码。另一种方法是请求创建您想要的异常处理程序并将其添加到其标准集。

是的,我已经根据您的代码创建了自己的异常处理程序。我认为我的问题是异常处理程序的handle()方法是在请求-响应阶段执行的,现在调用任何javascript都太迟了。我如何从这个异常处理程序告诉JSF我想执行一些javascript并使其呈现?执行与
FullAjaxExceptionHandler
相同的操作:如果响应尚未提交,则重置响应。我已经尝试过了,但可能是我做错了什么,因为我对JSF生命周期非常陌生。我再试试看。谢谢。是的,我已经根据您的代码创建了自己的异常处理程序。我认为我的问题是异常处理程序的handle()方法是在请求-响应阶段执行的,现在调用任何javascript都太迟了。我如何从这个异常处理程序告诉JSF我想执行一些javascript并使其呈现?执行与
FullAjaxExceptionHandler
相同的操作:如果响应尚未提交,则重置响应。我已经尝试过了,但可能是我做错了什么,因为我对JSF生命周期非常陌生。我再试试看。谢谢