版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c15158032319/article/details/86300179
我在使用Springboot2.0通过重载WebMvcConfigurationSupport和使用注解@Configuration的方法添加自定义拦截器后会出现一个bug,就是我们在application.properties配置的视图解析失效
我在application.properties的配置如下:
server.port=8086
server.servlet.context-path=/
spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp
我的InterceptorConfig 代码如下:
@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {
@Autowired
private LoginHandlerInterceptor loginHandlerInterceptor;
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/index");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
super.addViewControllers(registry);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 判断用户是否登录的拦截器
registry.addInterceptor(loginHandlerInterceptor).addPathPatterns("/*/*");
super.addInterceptors(registry);
}
}
我推测应当是WebMvcConfigurationSupport 中创建了新的视图解析器,既然如此,我就直接自定义一个ViewResolver 放到WebMvcConfigurationSupport中,问题得到解决。
private static final String VIEW_PREFIX = "/views/";// 视图前缀
private static final String VIEW_SUFFIX = ".jsp";// 视图后缀
private static final String VIEW_CONTENT_TYPE = "text/html;charset=UTF-8";//视图的内容类型。
/**
* 配置 视图解析器
* @return
*/
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setCache(true);
resolver.setPrefix(VIEW_PREFIX);
resolver.setSuffix(VIEW_SUFFIX);
resolver.setExposeContextBeansAsAttributes(true);
resolver.setContentType(VIEW_CONTENT_TYPE);
return resolver;
}