HandlerInterceptorAdapter.postHandle不会被调用

时间:2013-08-13 19:01:40

标签: spring spring-mvc

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

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}放在页面上时,它只是空的。

1 个答案:

答案 0 :(得分:3)

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

public void postHandle(
    HttpServletRequest request, HttpServletResponse response, 
    Object handler, ModelAndView modelAndView) { ... }

您可以通过@Override注释旨在覆盖超类方法的方法来防止此类问题:

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

在这种情况下,编译器会给出错误,因为此方法不会覆盖任何内容。