Spring HandlerInterceptorAdapter.postHandle不';我没接到电话

Spring HandlerInterceptorAdapter.postHandle不';我没接到电话,spring,spring-mvc,Spring,Spring Mvc,我想用变量填充所有页面,但它不起作用: public class PagePopulationInterceptor extends HandlerInterceptorAdapter { public void postHandle(ModelMap map) { map.addAttribute("hello", "world"); } } @Configuration @EnableWebMvc public class WebMvcConfig exte

我想用变量填充所有页面,但它不起作用:

public class PagePopulationInterceptor extends HandlerInterceptorAdapter {
    public void postHandle(ModelMap map) {
        map.addAttribute("hello", "world");
    }
}

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    public @Override void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new PagePopulationInterceptor());
    }
}

当将
${hello}
放在页面上时,它只是空的。

请注意,
postHandle()
方法的签名不正确,因此它不会覆盖
HandlerInterceptorAdapter
的实际方法。正确的答案是:

public void postHandle(
    HttpServletRequest request, HttpServletResponse response, 
    Object handler, ModelAndView modelAndView) { ... }
您可以通过注释打算通过
@override
覆盖超类方法的方法来防止此类问题:

@Override
public void postHandle(ModelMap map) { ... }

在这种情况下,编译器将给您错误,因为此方法不会重写任何内容。

请注意,
postHandle()
方法的签名不正确,因此它不会重写
HandlerInterceptorAdapter
的实际方法。正确的答案是:

public void postHandle(
    HttpServletRequest request, HttpServletResponse response, 
    Object handler, ModelAndView modelAndView) { ... }
您可以通过注释打算通过
@override
覆盖超类方法的方法来防止此类问题:

@Override
public void postHandle(ModelMap map) { ... }
在这种情况下,编译器将给您错误,因为此方法不会重写任何内容