随笔-42  评论-349  文章-4  trackbacks-0
Struts2在上传文件时如果文件超过设定的大小就会将“the request was rejected because its size (XXXX) exceeds the configured maximum (XXXX)”类似的错误添加到Action中,也不做任何的国际化处理,但是有时这并不是我们想要的错误信息,我们需要把它替换成我们自己的错误提示,比如“你上传的文件(XXX)超过允许的大小(XXX)”,那么如何做呢?

         这个问题netfork在http://www.javaeye.com/topic/287800分析的很详细,他给出了几种解决办法。参照他的分析,我们还可以这样做:
这个错误是commons-fileupload组件在上传的文件超过我们设定的大小的时候抛出的一个异常信息。fileUpload拦截器在捕捉到commons-fileupload的异常信息后会调用Action的addActionError()方法将他们添加到ActionError中。intercept()方法中的该部分代码如下:


         所以,要将该信息替换成我们自己的,那么我们可以覆盖掉ActionSupport的addActionError()方法,在该方法中 “偷梁换柱”即可。假设我们有个文件上传的Action类FileUpload,它继承自ActionSupport类,其关键代码则如下:




By:残梦追月
posted on 2009-04-15 11:41 残梦追月 阅读(11072) 评论(5)  编辑  收藏 所属分类: Struts

评论:
# re: Struts2中文件上传错误提示信息the request was rejected because its size的解决办法 2009-04-15 14:28 | 银河使者
不用这么麻烦,在资源文件中指定struts.messages.error.file.too.large就可以,如下

struts.messages.error.file.too.large = “{1}”文件尺寸太大

其中{1}会被替换成上传的文件名。  回复  更多评论
  
# re: Struts2中文件上传错误提示信息the request was rejected because its size的解决办法 2009-04-15 15:01 | 残梦追月
@银河使者
那样不行的,原因这里有说明http://www.javaeye.com/topic/287800  回复  更多评论
  
# re: Struts2中文件上传错误提示信息the request was rejected because its size的解决办法 2009-04-15 20:05 | 银河使者
@残梦追月
是的,我忘说了,struts.messages.error.file.too.large只在上传文件大小在maximumSize和struts.multipart.maxSize之间时才会显示这个值,其中maximumSize是文件上传拦截器的参数。如果超过struts.multipart.maxSize大小,文件不会被上传,在服务端和客户端页面都会抛出异常。
如果要替换信息,还不如直接替换common-upload这个组件中的相关信息。

  回复  更多评论
  
# re: Struts2中文件上传错误提示信息the request was rejected because its size的解决办法 2009-04-16 10:31 | 残梦追月
@银河使者
我这个就是替换这个信息的,不用重新编译替换common-upload。  回复  更多评论
  
# re: Struts2中文件上传错误提示信息the request was rejected because its size的解决办法 2009-10-04 17:29 | ldb
说的不怎么地!并且实际上还不好使!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: