Как условно вызвать сценарий a4j: commandButton oncomplete в зависимости от результата действия - PullRequest
1 голос
/ 01 апреля 2011

У меня есть

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

Однако, если при myBean.doCalculation() возникает ошибка, всегда вызывается атрибут oncomplete.Как я могу позволить этому зависеть от результата действия метода?

Ответы [ 3 ]

4 голосов
/ 01 апреля 2011

Вы можете проверить наличие ошибок в событии oncomplete и перенаправить, если они не найдены. Это можно сделать так

oncomplete="#{facesContext.maximumSeverity == null ? 'redirectBrowser()' : 'doSomethingElse()'}"
3 голосов
/ 17 января 2012

Если вы используете 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.Таким образом, метод действия просто не будет вызываться вообще, если проверка не удалась.

2 голосов
/ 17 января 2012

Что ж, просто искать faceContext.maximumSeverity == null недостаточно, может быть предупреждение о текущей максимальной серьезности, которое также следует перенаправить. Вместо этого напишите метод, который проверяет, есть ли максимальная серьезность ошибки приоритета ...

...