我正在研究Spring MVC/Webflow应用程序(版本3.2),并试图获得异常处理工作,我可以在其中输出自定义异常消息到日志文件和error.jsp。我遇到的问题是异常处理程序没有被解雇。我创建了下面的类并注明为“@ControllerAdvice
”,并把它放到同一个包我的控制器时抛出异常:@ControllerAdvice没有触发
@ControllerAdvice
public class MyCustomExceptionController {
@ExceptionHandler(MyCustomException.class)
public ModelAndView handleMyException(MyCustomException ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("/error/error");
modelAndView.addObject("errorId", ex.getErrorId());
modelAndView.addObject("message", ex.getErrorMessage());
return modelAndView;
}
}
,并增加了以下的MVC-config文件:
<mvc:annotation-driven/>
而且包括在我的应用程序,配置文件如下:
<context:component-scan base-package="package containing my controllers and MyCustomExceptionController">
<context:include-filter type="annotation"
expression="org.springframework.web.bind.annotation.ControllerAdvice" />
</context:component-scan>
为什么这是行不通的任何想法?
只有在您选择的未处理的自定义异常发生时('MyCustomException'),才会调用handleMyException()方法。即使在抛出MyCustomException之后,这个方法是不是被调用的? [This](http://viralpatel.net/blogs/spring-mvc-exception-handling-controlleradvice-annotation/)是你可能会接近的教程。 – Tiny
我在handleMyException上放了一个断点,即使在抛出MyCustomException之后该方法也不会被调用。 – user676567
如果您要在此类中使用'@ InitBinder'注释来注释您选择的方法,就像该示例所调用的那样? – Tiny