file-upload – Struts 2文件上传拦截器配置问题

尝试在我的应用程序中配置Struts 2文件上传拦截器时遇到两个问题.我想更改参数maximumSize(默认值为2 MB,我需要它为5 MB)和消息资源struts.messages.error.file.too.large(应用程序区域设置为pt_BR,因此消息在葡萄牙语,而不是英语).

应用程序当前配置如下:

struts.properties

struts.locale=pt_BR 
struts.custom.i18n.resources=MessageResources

在struts.xml

<package name="default" namespace="/" extends="struts-default">
    <interceptors>
        <interceptor name="login" class="br.com.probank.interceptor.LoginInterceptor"/>
        <interceptor-stack name="defaultLoginStack">
            <interceptor-ref name="login" />
            <interceptor-ref name="defaultStack"/>
        </interceptor-stack>
    </interceptors>

    <default-interceptor-ref name="defaultLoginStack" />
    ...
</package>

...
<package name="proposta" namespace="/proposta" extends="default">
    <action name="salvarAnexoProposta" method="salvarAnexoProposta" class="br.com.probank.action.AnexoPropostaAction">
        <interceptor-ref name="defaultLoginStack">
            <param name="fileUpload.maximumSize">5242880</param>
        </interceptor-ref>
        <result name="success">/jsp/listagemAnexosPropostaForm.jsp</result>
        <result name="input">/jsp/crudAnexoPropostaForm.jsp</result>
        <result name="error">/jsp/error.jsp</result>
        <result name="redirect" type="redirect">${redirectLink}</result>
    </action>
</package>

MessageResources.properties

...
struts.messages.error.file.too.large=O tamanho do arquivo...

我的Action实现和我的JSP代码没有什么特别之处.他们按照找到的示例http://struts.apache.org/2.1.6/docs/file-upload-interceptor.html.当我尝试上传超过5 MB的文件时,应用程序显示消息“请求被拒绝,因为其大小(6229458)超过了配置的最大值(2097152)” – 默认的文件上载消息默认的maximumSize值.

我尝试将消息资源struts.messages.error.file.too.large放在struts-messages.properties中,但之后消息没有改变.配置文件上传拦截器的正确方法是什么?我正在使用Struts 2 2.1.7.提前致谢.

终于解决了整个难题! struts.xml和MessageResource.properties已正确配置.问题是struts.multipart.maxSize值.这个值必须大于所需的上传限制(在我的应用程序中为5242880),所以我将其设置为10000000.如果struts.multipart.maxSize值等于或小于fileUpload.maximumSize Struts 2使用的库进行上传在文件上传拦截器有机会完成其工作之前,停止上载过程(并写入错误消息).
相关文章
相关标签/搜索