gpt4 book ai didi

spring-webflow - 如何在 Spring WebFlow 中处理来自 CommonsMultipartResolver 的 SizeLimitExceededException?

转载 作者:行者123 更新时间:2023-12-04 15:24:48 30 4
gpt4 key购买 nike

我有以下情况。我有一个按以下方式配置的 CommonsMultipartResolver bean。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="2100000" />

我在 Spring Web Flow View 状态 jsp 中有一些文件上传字段。

如果文件低于限制,一切正常,但如果文件超过 2MB-s 的限制,我必须在表单的绑定(bind)结果中添加验证错误。

我的问题是多部分文件解析器在超出文件限制时抛出 org.apache.commons.fileupload.FileUploadBase.SizeL imitExceededException 异常,我找不到在 Spring Web Flow 中捕获此问题并将我的 FieldError 添加到形式。

我尝试使用转换标记的 on-exception 属性,但如果我理解正确,它仅适用于 Spring Web Flow 中引发的异常。

我也尝试在 spring mvc 中使用 SimpleMappingExceptionResolver,但我不想重定向到页面,我想处理这个异常。

我还发现了这个: https://jira.springsource.org/browse/SWF-158

但它来自 1.0 版,我假设它已经被合并,或者找到了更好的方法来处理这些情况。

任何有关如何处理此问题的想法将不胜感激。

谢谢。

最佳答案

在您的 SimpleMappingExceptionResolver您应该能够覆盖 resolveException方法,确定被捕获的异常类型并适当处理。

我在我们的项目中发现了一些旧代码,似乎可以解决类似的异常;

public class GeneralMappingExceptionResolver extends SimpleMappingExceptionResolver {

@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) {

if(exception instanceof MaxUploadSizeExceededException) {
MaxUploadSizeExceededException maxe = (MaxUploadSizeExceededException)exception;
String errorMessage = "Max filesize exceeded, please ensure filesize is too large.");
HashMap<String, Object> model = new HashMap<String, Object>(2);
model.put("errorMessage", errorMessage);
return new ModelAndView("verification/psv/consent", model);
} else {
return super.resolveException(request, response, handler, exception); // Do whatever default behaviour is (ie throw to error page).
}
}

请注意,“verification/psv/consent”是引发此异常的流程以及需要返回的流程。我们只有一个页面有文件上传。

显然 errorMessage 只是传递给 View 的参数,因此需要像错误消息一样处理和显示。您可能还需要重新填充已提交的任何其他表单字段。希望这是朝着正确方向发展的一点。

关于spring-webflow - 如何在 Spring WebFlow 中处理来自 CommonsMultipartResolver 的 SizeLimitExceededException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13117353/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com