我们的spring启动控制器具有ajax调用的方法以及渲染CRUD模板的标准方法。我们希望能够使用单个注释来注释所有ajax方法,这样无论抛出什么类型的异常,我们都可以返回ui可以处理的响应。
我一直在查看ControllerAdvice和ExceptionHandler注释,但我不认为它们可以按我们想要的方式使用。 ControllerAdvice只能覆盖整个控制器,因此任何异常处理也会涵盖非ajax方法。类似地,ExceptionHandler注释将处理来自两种方法的异常。
目前的想法是将两种类型的方法ajax和CRUD分成单独的控制器。还有另一种方法吗?
答案 0 :(得分: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
}
}