Sprinboot添加自定义拦截器后视图解析失败问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }

猜你喜欢

转载自blog.csdn.net/c15158032319/article/details/86300179