我正在研究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