我在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”的任何建议,以便我可以获得正确的重定向?
答案 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 {
}