-1

我在 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 并转到我的自定义错误页面并显示适当的消息。相反,它直接进入应用程序错误而不进入操作的方法。

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

4

2 回答 2

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 
于 2013-01-31T11:42:01.590 回答
0

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

您还可以定义一个自定义结果名称来代替“输入”,如下所示

@InputConfig(resultName = "customInputResultNameWhenValidationFails")
public final String execute() throws Exception {
}
于 2013-02-01T05:58:25.903 回答