struts 2 multipart maxSize动作返回

时间:2013-01-31 11:33:04

标签: file-upload struts2 limit multipartform-data actionresult

我在struts2中设置了属性"struts.multipart.maxSize=524288000",因此我可以将整体上传大小限制为该大小。当我上传2个超过该限制的文件时,FileUpload拦截器会发生异常

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (718551153) exceeds the configured maximum (524288000)

但是代码没有到达带有错误的操作,因此我可以从操作返回ERROR并转到我的自定义错误页面并显示相应的消息。相反,它直接转到应用程序错误,而不是转到操作的方法。

有关如何返回“ERROR”的任何建议,以便我可以获得正确的重定向?

2 个答案:

答案 0 :(得分:1)

您需要为行动配置input结果。

您还可以为fileUpload参数配置maximumSize拦截器以执行操作:

<action name="..." class="...">
  <interceptor-ref name="defaultStack">
    <param name="fileUpload.maximumSize">524288000</param>
  </interceptor-ref>

  <result name="input">error_page</result>
  <result>success_page</result>
</action>

然后,您可以使用此键覆盖错误消息的文本:

struts.messages.error.file.too.large 

答案 1 :(得分:0)

要使“输入”结果正常工作,您必须将验证(org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor)和DefaultWorkflowInterceptors(com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor)作为拦截器堆栈的一部分

您还可以定义要使用的自定义结果名称,而不是像下面的“输入”

@InputConfig(resultName = "customInputResultNameWhenValidationFails")
public final String execute() throws Exception {
}