每当加载JSF facelet时出现错误,JSF就会在错误点停止呈现页面并显示错误页面(默认行为)。我希望JSF继续渲染页面并在页面中显示异常/错误。例如,如果页面正在加载一个抛出异常的“portlet”,那么该异常将在portlet中显示为文本。我不希望将整个页面转发到单独的错误页面。
我初始化了自己的ExceptionHandlerFactory
和ExceptionHandler
实现,我可以成功迭代ExceptionQueueEvents
。但是,我不知道如何指示JSF继续加载页面,尽管有错误。这甚至是正确的方法吗?是在调用ExceptionHandler(正如我想的那样)还是在中间处理facelet?如果之后,我可以在ExceptionHandler
内做些什么吗?
我知道我应该:
但是,我希望用户能够继续使用系统,尽管有一些小的组件故障(例如,如果某个新闻源portlet抛出一个错误,不应该阻止用户看到其他内容并使用它)。 / p>
我正在使用Mojarra 2.0.2。我觉得这是一个非常简单的解决方法,但我无法弄明白:(
答案 0 :(得分:2)
如果您的页面包含单独的内容,请考虑使用(i)帧。这样,如果某些特定内容无法加载,整个页面仍会呈现,但该帧将显示错误页面。这当然意味着所有单独的组件都是完整的html页面。
BalusC 绝对正确,您不应该尝试处理任何解析异常等。奇怪的呈现页面段不是用户友好的,并且可能导致非常奇怪的结果。
如果您有角色/权限问题,那些场景应该与jsf渲染分开维护。授权应在 转发到页面之前确认,而不是在尝试呈现时。
答案 1 :(得分:1)
这样做意味着你要给最终用户一个半熟的HTML页面(因为JSF没有(也不能)完成HTML渲染)而且未明确 web浏览器将如何显示页面。
不要这样做。