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()"

但是,仅在 action 方法中执行重定向更干净:

public String doCalculation() {
    // ...

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

更干净的是只通过 a 进行验证Validator。这样,当验证失败时,根本不会调用 action 方法。

于 2012-01-17T18:45:37.963 回答
2

好吧,仅仅寻找 facesContext.maximumSeverity == null 是不够的,可能会有一个警告作为当前的最大严重性,它也应该重定向。相反,编写一个方法来查看是否存在任何最大严重性的优先级错误......

于 2012-01-17T16:48:21.667 回答