【发布时间】:2012-12-09 06:12:33
【问题描述】:
我正在使用 Struts 2 在 glassfish 中运行 Web 应用程序。 我的 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>
如果我分别使用准备和执行过滤器,也会发生同样的情况。
【问题讨论】:
-
发布您的 web.xml,以便我们准确了解所涉及的内容。我已经在 Glass fish 上多次使用 struts2 文件上传,没有问题,所以这肯定是您的特定配置问题。
标签: struts2 glassfish web.xml sitemesh apache-commons-fileupload