struts2 配置默认拦截器后 upload 后两次removing file问题

如果我在struts.xml中配置了upload的默认拦截器:

struts.xml
[code="java"]

1024


[/code]
在每次upload执行完后,在控制台中会两次输出下面的信息:
com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Removing file

如果我不在struts.xml中配置默认拦截器,那么在upload后removing信息就只会出现一次。

这是不是证明如果我配置了默认拦截器,那么默认拦截器会执行两次?

[b]问题补充:[/b]
谢谢先,但我怎么解决这个问题呢?

我必须限制文件大小,但又不能改defaule中的内容,而且就算能改也不行。

不同action需要不同的拦截需求

就是记录上传的日志嘛,

信息: Removing file 也就是把上传后的临时文件删除吧

以下是struts-default.xml中的defaultStack的配置:[code="xml"]











[color=red][size=medium][/size][/color]



dojo..*



input,back,cancel,browse


input,back,cancel,browse


[/code]

[code="xml"]<!-- 配置默认拦截器 -->

[/code]默认拦截器栈(defaultStack)中已经有了fileUpload的interceptor。
如果配置了默认拦截器栈,那么默认拦截器栈中的fileUpload会执行一次;

[code="xml"]

1024

[/code]
以上配置又会执行fileUpload拦截器。

到此,楼主一定明白了其中原因了!

上面得代码有点乱,重新发一下

struts-default.xml中的defaultStack的配置;

[code="xml"]
















dojo..*



input,back,cancel,browse


input,back,cancel,browse


[/code]

那你应该这样配置

[code="java"]















dojo..*,^struts..*



input,back,cancel,browse


input,back,cancel,browse

然后你的action中就可以配置如下,就不会这样了

1024

[/code]

可以按如下方式配置你的action拦截器,不使用defaultStack。

[code="xml"]










1024





dojo..*



input,back,cancel,browse


input,back,cancel,browse
[/code]

lz:

一下几句可能对你了解defaultStack的使用有帮助

[list]
[*]如果在action中引用了任何拦截器,defaultStack拦截器栈将失效!

[*]解决方法很简单,将defaultStack配置进去即可
[/list]