2016-07-07 16 views
0

私たちのスプリングブートコントローラには、ajaxによって呼び出されるメソッドとCRUDテンプレートをレンダリングする標準メソッドがあります。すべてのAjaxメソッドに1つの注釈を付けることで、どのようなタイプの例外がスローされても、uiが処理できる応答を返すことができるようにしたいと考えています。特定の注釈付きメソッドに対するスプリングブート例外処理

私はControllerAdviceアノテーションとExceptionHandlerアノテーションを見てきましたが、どちらの方法でも使用することはできません。 ControllerAdviceはコントローラ全体のみをカバーすることができるため、例外処理は非Ajaxメソッドもカバーします。同様に、ExceptionHandlerアノテーションは、両方のタイプのメソッドからの例外を処理します。

現在のアイデアは、2つのタイプのメソッドajaxとCRUDを別々のコントローラに分割することです。これを行う別の方法がありますか?

答えて

0

これは、これが春(または現在の私の現在の春の知識)にはそれほど簡単ではないと思います。

我々は

別に他のコントローラにajaxMethods分離から単一 注釈

を持つすべての私たちのAJAXのメソッドに注釈を付けることができるようにしたいのですが、私はこれを行うための別の方法を考えることができます。

1. myAjaxExceptionのような独自の例外クラスを宣言します。

2.コントローラーでこの例外を処理しないでください。例外が発生したときに投げてください。ajaxのメソッド

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

3. HandlerExceptionResolverを以下のように実装して、myAjaxExceptionを受け入れます。

HandlerExceptionResolverは、コントローラによって処理 インターセプトプロセス例外 MVC方式に上げ、ない に使用される実装のDispatcherServletのアプリケーション コンテキスト内で宣言任意スプリングビーン。

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

私は同様と考えられるが、それは我々が、私はそれを認識してい – mowwwalker

+0

を避けるためにしようとしているものだったtry/catchブロック、内のすべてのAJAXの方法を包む意味するだろう、私の解決策は、「他のことができます私たちがより良いものを見つけるまで、「周りに働く」。 –

関連する問題