我正在使用 Struts 2 在 glassfish 中运行 webapp。我的 web.xml 文件具有以下过滤器:
StrutsPrepareFilter
,
SiteMeshFilter
,
StrutsExecuteFilter
它工作正常。
问题是我有一个文件上传。出于某种原因,它适用于 Tomcat,但在 GlassFish 上,该文件在操作中为空。
如果我将过滤器更改为:
ActionContextCleanUp
,
SiteMeshFilter
,
FilterDispatcher
有用。事实是,ActionContextCleanUp
并且FilterDispatcher
已被弃用。
所以我有两个问题:有谁知道 glassfish 文件上传有什么问题?
我正在尝试调试过滤器以查看文件丢失的位置,但我不知道过滤器中的参数在哪里。过滤器收到一个没有参数的 httpservletrequest,即使在 tomcat 上也是如此。
过滤器上提交的参数在哪里?
我创建了一个发生同样问题的测试项目。该文件被上传到临时文件夹然后丢失。
这是 web.xml:
<welcome-file-list>
<welcome-file>upload.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>exec</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>exec</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果我分别使用准备和执行过滤器,也会发生同样的情况。