Я делаю новый проект с помощью struts2. Все хорошо, но я не знаю, что происходит в этом случае.
В проекте есть цепные перенаправления, когда бизнес-логика дает сбой, он возвращается к последнему JSP (последнее действие), чтобы успешно перезагрузить всю страницу без работы по программированию (также перезагружается старый запрос).
В любом случае, когда Jakarta обнаруживает, что пользователь пытается загрузить большой файл (конфигурация по умолчанию — 20 МБ), логика действия знает об этом и принудительно перенаправляет цепочку на последнее действие.
Я отлаживаю эту логику. У меня есть перехватчик, который делает несколько вещей в типичной строке:
result = invocation.invoke();
Когда Jakarta принудительно перенаправляет цепочку, перехватчик перехватывает этот новый запрос, но не достигает действия с помощью метода вызова.
Я не знаю, почему это происходит. Когда одно и то же действие вызывает такое же перенаправление цепочки, поскольку другие проверки, такие как перехватчик FileUpload для struts2 или проверки owns, работают хорошо.
Я решил избежать перенаправления в программе, но я хочу знать, почему я не могу использовать свой обычный режим.
Некоторые части файла struts.xml:
<constant name="struts.multipart.maxSize" value="20971520" />
Результатом MostrarResumenSubsanacion является следующее действие, если все валидации хорошие.
Результатом действия MostrarRespuestaSubsanaciones является последнее действие в случае сбоя какой-либо проверки.
Результатом ErrorJakarta является новая строка для решения проблемы.
<action name="MostrarResumenSubsanacion" class="struts.expedientes.subsanaciones.MostrarResumenSubsanacion">
<param name="conseguirConexion">SI</param>
<param name="seguimiento">SI</param>
<interceptor-ref name="interceptorFileStack"></interceptor-ref>
<result name="MostrarRespuestaSubsanaciones" type="chain">MostrarRespuestaSubsanaciones</result>
<result name="ErrorJakarta">/forms/struts/expedientes/subsanaciones/ventanaRespuestaSubsanacion.jsp</result>
<result name="MostrarResumenSubsanacion">/forms/struts/expedientes/comun/ventanaResumen.jsp</result>
</action>
<action name="MostrarRespuestaSubsanaciones" class="struts.expedientes.subsanaciones.MostrarRespuestaSubsanaciones">
<param name="conseguirConexion">SI</param>
<param name="seguimiento">SI</param>
<interceptor-ref name="interceptorBaseStack"></interceptor-ref>
<result name="MostrarVentanaSubsanaciones">/forms/struts/expedientes/subsanaciones/ventanaRespuestaSubsanacion.jsp</result>
<result name="input">/forms/struts/expedientes/subsanaciones/ventanaRespuestaSubsanacion.jsp</result>
</action>