0

PF スケジュールのイベントをロードするときに、例外が発生する可能性があります。そのような状況が発生したことを (growl コンポーネントを使用して) ユーザーに何らかの方法で通知することは可能ですか?

編集:

これは、例外がキャッチされる方法です。

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

これは、スケジュール コンポーネントが定義されている 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

例外に敏感なコードを に置き、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。この回答でいくつかのヒントを見つけることができます: AJAX化されたコンポーネントのJSF 2.0例外を処理する正しい方法は何ですか? 必ずしも完全なエラー ページを表示する必要はありません (ただし、この種の例外は通常、コードのバグや構成ミスではないと仮定すると、通常は回復できないため、これが望ましいです)、faces コンテキストにメッセージを追加することもできます。そこで。

于 2012-07-02T12:07:41.827 に答える