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) { ... }
在这种情况下,编译器将给您错误,因为此方法不会重写任何内容