首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@ControllerAdvice方法似乎绕过了拦截器

@ControllerAdvice方法似乎绕过了拦截器
EN

Stack Overflow用户
提问于 2013-12-12 18:56:19
回答 1查看 5.3K关注 0票数 3

我的api有一个带有@ControllerAdvice注释的类,并有一些中心异常处理。它处理的异常之一是MethodArgumentNotValidException,当一个带有@Valid注解的请求方法参数失败时,它将被抛出。

在我的应用程序中,我还有一个CORS拦截器设置,它在请求成功时将“访问控制-允许-原产地”头添加到servlet响应中。但是,当使用@Valid注释的参数验证失败时,我的拦截器就会被绕过。我的异常处理程序需要为无效的表单字段发送错误信息,以便在浏览器中处理它们。

只是想知道当抛出异常时,我的拦截器是否会被绕过,或者我是否缺少了@ControllerAdvice类中的一些配置。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 19:07:55

这确实是正常的行为。

来自HandlerInterceptor.postHandle的javadoc

拦截处理程序的执行。在HandlerAdapter实际调用处理程序之后调用,但在DispatcherServlet呈现视图之前调用。可以通过给定的ModelAndView向视图公开其他模型对象。DispatcherServlet在执行链中处理一个处理程序,该处理程序由任意数量的拦截器组成,最后是处理程序本身。使用该方法,每个拦截器都可以对执行进行后处理,并按执行链的相反顺序应用。

可以说,在实际调用方法之前抛出了MethodArgumentNotValidException,在准备实际的方法调用时会调用它。实际上,只有在成功地执行/调用方法之后才执行postHandle。在异常情况下,只调用preHandleafterCompletion方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20551888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档