0

为我的 PF 计划加载事件时,有时可能会发生异常。是否可以以某种方式通知用户(使用咆哮组件)发生这种情况?

编辑:

这是捕获异常的方式:

catch (Exception e) {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Sample error message", "Sample Error"));
    RequestContext.getCurrentInstance().update("scheduleForm:scheduleGrowl");
    e.printStackTrace();
}

这是定义 schedule 组件的 xhtml 部分:

<ui:define name="content">
        <h:form id="scheduleForm">
            <p:growl id="scheduleGrowl" showDetail="true" autoUpdate="true" sticky="true"/> 
            <p:schedule value="#{scheduleController.scheduleModel}"
                view="agendaDay" slotMinutes="15" resizable="false"
                draggable="false" firstHour="8"
                locale="${localeResolver.staticLocale}"
                axisFormat="${localeResolver.defaultTimeFormat}"
                timeFormat="${localeResolver.defaultTimeFormat}"
                >
            </p:schedule>

        </h:form>
    </ui:define>
4

1 回答 1

2

将异常敏感代码放在 a中try-catch,并在中使用FacesContext#addMessage()catch将消息添加到上下文中。

例如

try {
    // ...
} catch (SomeException e) {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
        FacesMessage.SEVERITY_FATAL, e.getClass().getName(), e.getMessage()));
    // Log the exception as well?
}

但是,如果您对此无法控制,则需要创建一个自定义ExceptionHandler. 在这个答案中可以找到一些提示:处理 AJAXified 组件的 JSF 2.0 异常的正确方法是什么?您不一定需要显示完整的错误页面(尽管这更可取,因为这种异常通常是不可恢复的,假设这实际上不是您的代码中的错误/错误配置),您还可以在 faces 上下文中添加一条消息在那里。

于 2012-07-02T12:07:41.827 回答