2012-11-02 55 views
3

我正在嘗試爲Spring MVC服務的每個請求返回一個有效的JSON主體,這兩個請求都是正確的和無效的。使用ExceptionResolver捕獲Spring MVC DispatcherServlet異常

使用@ExceptionHandlerExceptionHandlerExceptionResolverDefaultHandlerExceptionResolver組合和我自己的AbstractHandlerExceptionResolver我能夠處理和設置機構被分派到一個有效的控制器或Spring Security的拒絕幾乎所有的無效請求。

但是,DispatcherServletnoHandlerFound所引發的錯誤不能被攔截,因此響應具有類似404的有效HTTP狀態碼,但正文包含Tomcat默認的XML錯誤。

任何人都知道如何設置或配置Spring異常解析器,以便截獲所有失敗的請求並設置有效的JSON正文?

回答

0

有一節介紹瞭如何處理調度程序servlet的spring處理異常解析器。 [http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/DispatcherServlet.html][1]

調度員的異常的解決策略可以通過 HandlerExceptionResolver指定,例如映射某些例外 錯誤頁面。缺省值是AnnotationMethodHandlerExceptionResolver, ResponseStatusExceptionResolver和DefaultHandlerExceptionResolver。 這些HandlerExceptionResolver可以通過 應用程序上下文覆蓋。 HandlerExceptionResolver可以被賦予任何bean的名字(它們是按類型測試的) 。

爲了能夠支持Dispatcher異常處理重寫,必須實現HandlerExceptionResolverOrdered類並將實現聲明爲spring bean。您必須將getOrder的值返回爲Integer.MIN_VALUE以覆蓋其他任何現有處理程序。