我的请求正文对象都实现了一个接口调用Auditable,其中可以设置用户名和lastUpdate时间戳。我希望在序列化之后拦截对控制器函数的调用,但是在它到达控制器之前,我可以将这些值放在一个地方。
我查看了HandlerInterceptor.prehandle
,但此方法在序列化之前执行。关于如何实现这一目标的任何建议?
答案 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.
}
}