在序列化之后但在控制器之前拦截@RequestBody

时间:2015-06-18 19:44:26

标签: spring-mvc

我的请求正文对象都实现了一个接口调用Auditable,其中可以设置用户名和lastUpdate时间戳。我希望在序列化之后拦截对控制器函数的调用,但是在它到达控制器之前,我可以将这些值放在一个地方。

我查看了HandlerInterceptor.prehandle,但此方法在序列化之前执行。关于如何实现这一目标的任何建议?

1 个答案:

答案 0 :(得分:2)

您可以使用ControllerAdvice,它可以在这些情况下提供帮助。它拦截所有控制器请求,您可以访问方法中的序列化域对象。它几乎可以是requestMapping方法所需的所有参数。希望这可以帮助。

@ControllerAdvice
public class ControllerAdvisor {

    @ModelAttribute
    public void addAttributes(HttpServletRequest request, HttpServletResponse response,Model model, @RequestBody DomainObject domain) {
        domain.setUserName("test");
        // set other items that you want to do.
    }   

}