我尝试了一个非常简单的事情 - 捕获与文件上传相关的 MaxUploadSizeExceededException 错误。
这是我的spring-servlet.xml中的相关位:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="100000" />
</bean>
这里的控制器中的 @ExceptionHandler 方法也可以处理文件上传内容
@ExceptionHandler(MaxUploadSizeExceededException.class)
public String handleException(MaxUploadSizeExceededException e, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("uploadErrorMessage", e.getCause().getMessage());
return "redirect:/page";
}
文件上传工作正常。但是,当我使用超过大小限制的文件进行测试时 - 它会抛出错误,并且永远不会调用ExceptionHanler的方法。
非常感谢任何有关其他内容的帮助或指示。
答案 0 :(得分:0)
您是否可以尝试更改ExceptionHandler以查找LimitExceededException和MultiPartException而不是子Exceptions?
答案 1 :(得分:0)
尝试使用@ControllerAdvice创建一个单独的类,然后处理来自所有控制器的异常。
@ControllerAdvice
public class ExceptionControllerAdvice {
@ExceptionHandler(MaxUploadSizeExceededException.class)
public String handleException(MaxUploadSizeExceededException e, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("uploadErrorMessage", e.getCause().getMessage());
return "redirect:/page";
}
}
因此,如果我们在@ControllerAdvice类的方法上定义@ExceptionHandler注释,它将应用于所有控制器。
您必须在spring-servlet.xml文件中定义以下内容。
<mvc:annotation-driven/>