В Struts2, если мы определили стек перехватчика, и он вызывается в порядке «первым прибыл — первым обслужен». Итак, на этапе постобработки, что произойдет, если один из более ранних перехватчиков вернет управляющую строку, которая в результате отобразит ответ клиенту. Я хочу знать, будет ли обработан левый перехватчик или нет.
Рабочий процесс Struts Interceptor
Ответы (1)
Ну это будет работать так.
Ваш метод действия будет вызываться только после того, как стек перехватчика будет полностью вызван. Это означает, что после успешного вызова первого перехватчика в стеке он вызовет следующий перехватчик, определенный в стеке, и ссылка, сохраненная в стеке, эта цепочка будет продолжайте вызывать, пока не будет вызван последний перехватчик в стеке
invocation.invoke()
этот вызов является ключом для вызова следующего перехватчика, определенного в стеке, или последнего, который вызовет желаемую функцию в вашем классе действий.
теперь, в другом случае, предположим, что какой-то из перехватчиков потерпел неудачу, скажем, workflow
, он вернет результат как INPUT
и остановит дальнейшее выполнение перехватчика, а фреймворк выведет пользователю желаемый JSP/Tempelate.
Затем происходит постобработка/очистка, в этом случае перехватчики будут вызываться в обратном порядке, т. е. сначала будет вызываться самый верхний или последний выполненный перехватчик, а затем и так далее.
Идея этой постобработки состоит в том, чтобы выполнить любую работу по очистке или любые другие вещи, которые необходимо сделать (например, очистку ресурсов и т. д.).
Надеюсь, это даст вам некоторое представление.
invoke()
возвращает результаты, они уже были отправлены обратно клиенту. Короче говоря, мы можем сказать, что эту постобработку можно использовать для выполнения определенной/условной логики.
- person Umesh Awasthi; 03.02.2012
PreResultListener
позволяет перехватчику получить контроль до того, как результат будет визуализирован, в противном случае это разумное описание.
- person Dave Newton; 03.02.2012