【发布时间】:2014-08-16 06:14:55
【问题描述】:
我正在开发 JSF2 应用程序,我正在尝试通过显示内联消息或弹出错误来为我的所有 xhtml 添加异常处理。
例如,如果在支持 bean 中发生服务异常,我将其包装在我的自定义 UI 异常中并重新抛出它,如下所示,其中第二个参数指示是否使用弹出窗口或内联消息通知用户该异常.
throw new UIException(e, true);
在我的异常处理程序包装器中,我正在拦截此异常,并根据第二个参数尝试在弹出窗口或内联中显示错误。对于弹出窗口,我有一个丰富的:popupPanel,我已将其包含在基本页面中,其中所有 xhtml 都包含在应用程序中。因此,在 exceptionHandler 包装器中,我将这个弹出窗口动态添加到渲染 ID,如下所示。
FacesContext.getCurrentInstance().getPartialViewContext()
.getRenderIds().add("popupForm:popupErrorPanelGroup");
对于内联消息,我想在我的基本 xhtml 中添加一个内联 sn-p,并希望以类似的方式在行消息中显示错误。这种方法的问题是消息定位不正确,内联消息应该显示在单个表单的顶部,但现在它显示在应用程序的顶部。为此,我必须手动在每个 xhtml 中包含我的 inlineexception xhtml。
内联异常 xhtml:
<h:panelGroup styleClass="error" rendered="#{errorInlineBackingBean.showError}">
<h:outputText id="errorText"
value="#{errorInlineBackingBean.errorMsg}" />
</h:panelGroup>
是否可以将这个 inlineException 包含在类似于弹出方法的基本页面中,并在应用程序中以任何形式显示?我想避免在每个 xhtml 中包含重复代码或在所有 xhtml 中放置 h:messages 标记。
【问题讨论】: