1

私は

<a4j:commandButton action="#{myBean.doCalculation}"
                   oncomplete="redirectBrowser()" />

ただし、でエラーが発生した場合は、myBean.doCalculation()常にoncomplete属性が呼び出されます。アクションメソッドの結果に依存させるにはどうすればよいですか?

4

3 に答える 3

4

oncompleteイベントのエラーをチェックし、エラーが見つからない場合はリダイレクトできます。このように行うことができます

oncomplete="#{facesContext.maximumSeverity == null ? 'redirectBrowser()' : 'doSomethingElse()'}"
于 2011-04-01T14:24:05.670 に答える
3

JSF 2.0を使用FacesContext#isValidationFalied()している場合は、検証が失敗したかどうかを確認するために使用できます。

oncomplete="if (#{not facesContext.validationFailed}) redirectBrowser()"

ただし、アクションメソッドでリダイレクトを実行するだけの方がクリーンです。

public String doCalculation() {
    // ...

    if (success) {
        return "nextPage.xhtml?faces-redirect=true";
    } else {
        return null;
    }
}

さらにクリーンなのは、によって検証を行うことValidatorです。このように、検証が失敗したときにアクションメソッドがまったく呼び出されません。

于 2012-01-17T18:45:37.963 に答える
2

まあ、facesContext.maximumSeverity == nullを探すだけでは十分ではなく、現在の最大重大度として警告が表示される場合があります。これもリダイレクトする必要があります。代わりに、優先度エラーの最大重大度があるかどうかを調べるメソッドを記述してください...

于 2012-01-17T16:48:21.667 に答える