如何覆盖Struts 2消息?

4
这是我的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中,则没有任何错误显示。这是什么原因?

到目前为止,我还没有取得任何成功。我已经搜索了网络并阅读了文档:http://struts.apache.org/2.1.8.1/docs/message-resource-files.html - user1191027
and: http://struts.apache.org/2.1.8/struts2-core/apidocs/org/apache/struts2/interceptor/FileUploadInterceptor.html - user1191027
请访问以下链接以了解有关异常处理的更多信息:http://struts.apache.org/2.2.1/docs/exception-handling.html - user1191027
我刚刚尝试了这个,但没有成功:http://blog.bielu.com/2008/09/solution-to-struts2-upload-file-error.html - user1191027
1
请在帖子本身中添加更多信息;这也有助于将您的问题移回问题列表的顶部,增加可见性。您正在使用哪个版本的S2? - Dave Newton
4个回答

2

@ThreaT 如果您发布整个Struts配置,我可以帮助您。您可以尝试这个(请参见编辑1),我以前从未尝试过。希望它能有所帮助。 - Jaiwo99
@ThreaT 抱歉,它不应该起作用,我刚刚检查了API Fielderror,它不像我想的那样工作。我猜错误可能是因为struts2的默认消息每次都会覆盖您的消息。请检查此内容(编辑2)。这应该是解决方案。 - Jaiwo99

0
首先,如果您尝试上传的文件大小超过了您为struts.multipart.maxSize指定的文件大小,则会出现此错误。
有一个非常简单的解决方案:在您的struts.xml中,增加struts.multipart.maxSize的文件大小值即可。
  <constant name="struts.multipart.maxSize" value="50777216000" />
  <param name="maximumSize">15728640</param>

保持参数名称“maximumSize”的值小于struts.multipart.maxSize的值, 就像上面的情况一样,除非超过struts.multipart.maxSize限制,否则您将获得在global.properties中定义的自定义错误..因此,请尝试将struts.multipart.maxSize值保持在较高范围内。


0

源代码 覆盖 Struts 默认属性

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

当您重定向错误消息时,它们将消失。因为您正在调用新操作来处理此情况,所以 struts2 提供了 messageStoreInterceptor。

源代码 messageStoreInterceptor

注意:我在这里指向较旧版本的 struts,如果您使用最新版本,请更改 URL 中的版本。


我的问题是,为什么我的属性文件没有生效? - user1191027

0
在 JSP 中使用 <s:actionerror /> 标签来打印错误信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接