2016-07-07 84 views
0

我們的spring引導控制器具有由ajax調用的方法以及渲染CRUD模板的標準方法。我們希望能夠使用單個註釋來註釋我們所有的ajax方法,這樣無論拋出什麼類型的異常,我們都可以返回ui可以處理的響應。針對特定註釋方法的Spring引導異常處理

我一直在看ControllerAdvice和ExceptionHandler註釋,但我不認爲任何一個都可以用我們打算的方式。 ControllerAdvice只能覆蓋整個控制器,所以任何異常處理都會覆蓋非ajax方法。同樣,ExceptionHandler註釋將處理這兩種方法的異常。

當前的想法是將兩種類型的方法ajax和CRUD拆分爲單獨的控制器。有沒有另一種方法來做到這一點?

回答

0

我不認爲這在Spring中是很簡單/直截了當的(或者至少對我目前的春天知識來說)。

我們希望能夠詮釋我們的所有的Ajax方法與單個 註釋

除了分離ajaxMethods到另一個控制器,我能想到的這樣做的另一種方式。

1.聲明自己的異常類,如myAjaxException

2.不要在控制器中處理這個異常,只要在裏面遇到任何異常時拋出它,你的ajax方法

try{ 
     //.... 
     }catch(Exception ex){ 
      throw new myAjaxException("this is myAjaxException blah blah blah"); 
     } 

3.通過實現HandlerExceptionResolver來接受myAjaxException,如下所示。

在DispatcherServlet的的應用程序 上下文中聲明任何Spring bean的實現HandlerExceptionResolver將用於 攔截和工藝任何異常在MVC系統提出並 由控制器進行處理。

public class AjaxExceptionResolver implements HandlerExceptionResolver { 

    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex); 
    if (ex instanceof myAjaxException) { 
       //return response to UI 
    } 

    } 
+0

我認爲是好,但是這意味着在try/catch塊,這是我們要設法避免 – mowwwalker

+0

我是知道的,我的解決方案可以是另一種「包裝每一個AJAX方法解決「,直到我們找到更好的。 –