Bal*_*éla 6 spring-webflow spring-webflow-2 apache-commons-fileupload
我有以下情况.我有一个CommonsMultipartResolver bean以下面的方式配置.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="2100000" />
Run Code Online (Sandbox Code Playgroud)
我在Spring Web Flow视图状态jsp中有一些文件上载字段.
如果文件低于限制,一切正常,但如果文件超过2MB-s的限制,我必须在表单上的绑定结果中添加验证错误.
我的问题是多部分文件解析器在超出文件限制时抛出org.apache.commons.fileupload.FileUploadBase.SizeL imitExceededException异常,我找不到在Spring Web Flow中捕获它的方法并将我的FieldError添加到形成.
我尝试使用transition标记的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).
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,“验证/psv/同意”是抛出此异常以及需要返回的流程。我们只有一个有文件上传的页面。
显然,errorMessage 只是传递到视图中的参数,因此需要像错误消息一样进行处理和显示。您可能还需要重新填充已提交的任何其他表单字段。但希望这是一个正确的方向。
| 归档时间: |
|
| 查看次数: |
4407 次 |
| 最近记录: |