Попытка понять немедленный = «истинный» пропуск ввода, когда это не должно

Как раз тогда, когда я думал, что сразу понял ... * вздох *

Рассмотрим следующую страницу JSF:



<br>

И этот боб:

public class TestBean {
   private String didSomething = "Nothing done yet";
   // + getter

public void doFoo() {
    didSomething = "Did foo!";        
}

public void doBar() {
    didSomething = "Did bar!";        
}

Из всего, что я прочитал о немедленном, я бы ожидал следующего:

При попытке выполнить foo без указания значения для поля ввода действие никогда не выполняется, поскольку во времяprocessValidationsPhase возникает ошибка, в результате чего страница сразу же после этого этапа перерисовывается с сообщением об ошибке. ЗначениеdidSomething остается неизменной. (Это работает как положено)

При попытке сделать бар, не предоставляя значение для поля ввода, действие выполняется во времяapplyRequestValuesPhase из-за непосредственного атрибута. ПеременнаяdidSomething изменено (Это работает как положено)

Что будет дальше,это описание состояния:"

Нулевое возвращаемое значение (как результат метода действия) приводит к тому, что обработка продолжается как обычно, т. Е. Не непосредственные компоненты проверяются, затем выполняется обновление-модель (если не было ошибок проверки). Для метода прослушивателя действий, который возвращает void, необходимо вызвать FaceContext.renderResponse (); если нормальный поток не желателен. "

Исходя из этого, у меня возникла идея, что обработка продолжается как обычно (поскольку мой метод действия не возвращает ни результат, ни силуrenderResponse()), что приводит к той же ошибке проверки. Разница лишь в том, что это происходитпосле установка.didSomethingОднако этого не происходит. Вместо этого создается впечатление, что сайт по-прежнему пропускает все оставшиеся фазы, при этом поле ввода не затрагивается. Перерисовывается без сообщения об ошибке.

Может кто-нибудь объяснить мне, где мое понимание того, как это работает, неправильно?

Ответы на вопрос(1)

Ваш ответ на вопрос