你如何覆盖Struts 2消息?

时间:2012-06-22 10:23:13

标签: jsp error-handling struts2 messages

这是我的struts.xml的一部分:

<constant name="struts.custom.i18n.resources" value="global" />

<action name="picture_save" method="pictureSave" class="PictureActionBean">
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">
            2097152
        </param>
        <param name="allowedTypes">
            image/bmp,image/gif,image/jpeg,image/jpg,image/png
        </param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <result name="success" type="redirect">picture</result>
    <result name="error">error</result>
</action>

我的global.properties文件直接存储在src /中,它包含:

struts.messages.error.uploading=Upload failed
struts.messages.error.file.too.large=Upload file is too large
struts.messages.error.content.type.not.allowed=Wrong file type uploaded

以下是我在jsp中显示错误的方法:

<s:fielderror />

目前,当我上传一个太大的文件时,我收到错误:

  

请求被拒绝,因为它的大小(6561343)超过了   配置最大值(2097152)

我想要做的是让它说“上传的文件太大”而不是上面的消息。有什么简单的方法可以做到这一点?

编辑1:

我正在使用struts版本2.1.8.1

编辑2:

另一件事是,当我添加:

<result name="input" type="redirect">error</result>

到我的struts.xml然后根本没有显示任何错误。这是什么原因?

4 个答案:

答案 0 :(得分:2)

嘿嘿,你真的坚持这个问题。看起来很简单。

点击此处的示例:http://struts2-by-ash.blogspot.com/2012/06/override-struts-2-messages.html

最好,j

答案 1 :(得分:0)

来源Overriding Struts Default Properties

  

框架使用了许多可以更改为适合的属性   您的需求。要更改任何这些属性,请指定该属性   struts.properties文件中的键和值。属性文件可以是   找到类路径上的任何位置,但通常位于   / WEB-INF /类

     

当您重定向错误消息时将会消失。因为你是   调用新动作来处理struts2提供的这种情况   messageStoreInterceptor。

来源MessageStoreInterceptor

注意:我在这里指的是struts的旧版本,所以如果你使用的是最新版本,请更改url中的版本。

答案 2 :(得分:0)

在JSP中使用<s:actionerror />标记来打印错误。

答案 3 :(得分:0)

首先,如果您尝试上传的文件超过为struts.multipart.maxSize指定的文件大小,则会出现此错误

有一个非常简单的解决方案:在struts.xml中,增加struts.multipart.maxSize的文件大小值,

  <constant name="struts.multipart.maxSize" value="50777216000" />
  <param name="maximumSize">15728640</param>

保持param name =“maximumSize”值小于struts.multipart.maxSize值, 与上面的情况一样,除非你超过struts.multipart.maxSize limit,否则你将获得在global.properties中定义的自定义错误。所以尝试将struts.multipart.maxSize值保持在某个高范围。