2016-07-07 37 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方法解决“,直到我们找到更好的。 –