Я читал Struts2 в действии, и там говорилось, что если перехватчик B срабатывает после перехватчика A и B определяет, что элементу управления нельзя разрешить переход к действию (поскольку могут быть ошибки проверки, как это делает DefaultWorkFLowInterceptor). Затем он возвращает "input" ... и страница отображается для пользователя. Затем управление возвращается перехватчику A, но A не может изменить результат, поскольку страница уже была отправлена клиенту.
Но поскольку перехватчик B возвращает только строку, перехватчик A может просто вернуть другую строку вместо нее, и результат изменится. DefaultWorkFLowInterceptor возвращает просто строку, на самом деле он ничего не записывает в поток ответа, поэтому, когда управление возвращается к своим предыдущим перехватчикам, почему они не могут изменить ввод?