Как метод validate() в Struts 2 получает результат?

В Struts 2 "input" возвращается, когда проверка не удалась в методе validate(). Затем я сопоставляю <result name="input"> с struts.xml для соответствующей страницы.

Мне просто интересно, как он получает "input", который является String, когда сам метод validate() возвращает void?

@Override
public void validate() {
    // if checks here
}

Я хотел бы понять эту концепцию.


person silver    schedule 02.12.2014    source источник
comment
Вы можете прочитать документы для этого или это или это.   -  person Roman C    schedule 02.12.2014
comment
Ну, вам нужно добавить ошибки поля или действия. Платформа запускает проверку, устанавливая эти значения в карту, если карта пуста, она запускает execute(). Вы также можете взглянуть на код (добавить источники с помощью maven), а затем проверить ActionSupport, и вы увидите сторону действия кода (не вызывающую сторону), но должно быть достаточно ясно, как это работает. Вы предоставляете функциональность, которая вызывается struts2 и выясняет, что делать. Типичное фреймворковое программирование следует голливудскому шаблону: вы не звоните нам, мы звоним вам.   -  person Quaternion    schedule 02.12.2014
comment
Вы можете найти это хорошим чтением: результат Struts2 INPUT: как это работает? Как обрабатываются ошибки конверсии/проверки?   -  person Andrea Ligios    schedule 03.12.2014


Ответы (1)


Сам метод validate() ничего не возвращает (void). Он вызывается validation перехватчиком.

Но после этого перехватчика обычно идет workflow перехватчик. Этот перехватчик отвечает за возврат INPUT результата, если действие hasErrors().

person Roman C    schedule 28.12.2014
comment
Большое спасибо за фактический ответ на этот вопрос. - person silver; 28.12.2014