gpt4 book ai didi

java - Struts2 中的 Jakarta 没有链重定向(上传大文件)

转载 作者:行者123 更新时间:2023-11-30 07:39:45 25 4
gpt4 key购买 nike

我正在使用struts2制作一个新项目。一切都很好,但我不知道在这种情况下发生了什么。

该项目有链重定向,当业务逻辑失败时,它返回到最后一个JSP(最后一个操作),无需编程工作即可成功重新加载所有页面(它也重新加载旧请求) .

无论如何,当 Jakarta 检测到用户正在尝试上传大文件(默认配置为 20 MB)时,操作的逻辑就会知道这一点,并强制链重定向到最后一个操作.

我调试了这个逻辑。我有一个拦截器可以做几件事,典型的做法是:

result = invocation.invoke();

当 Jakarta 强制链重定向时,拦截器会捕获这个新请求,但调用方法不会到达操作

我不知道为什么会发生这种情况。当相同的操作强制相同的链重定向时,因为其他验证(例如struts2的FileUpload拦截器或拥有验证)都可以正常工作。

我在程序中解决了避免重定向的问题,但我想知道为什么我不能使用正常模式。

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>

最佳答案

  1. 不鼓励使用Chain结果类型;尝试改用redirectAction(或dispatcher)。

  2. Struts2 中的每个请求:

    • 穿过一堆拦截器,
    • 最终达到行动,
    • 然后通过相同的拦截器堆栈向后过滤,运行 inspiration.invoke(); 行之后的代码(如果有);
  3. 如果发生不良情况(但可恢复),an INPUT result is thrown ;否则,如果发生非常糟糕的事情,就会抛出异常。

然后,如果您达到 20MB 阈值,则会在某处返回一个 INPUT 结果,而不是正常(错误)的链接过程。

通过查看两个拦截器堆栈的定义应该更容易破坏到底发生了什么,但是有了上述信息,您应该能够比更新问题更快地找到问题。

关于java - Struts2 中的 Jakarta 没有链重定向(上传大文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34853000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com