在使用thymeleaf加载css或js样式,当我们进入登录页的时候发现,所有的样式都是加载失败的。原因是在新版中有这样一个坑……:
当我们设置了addInterceptors-注册拦截器的时候,通常会这样设置
/**
* 注册拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 拦截除了登录页的全部请求,不拦截静态资源
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/", "/login.html", "/user/login");
}
这样可以保证未登录的用户无法进入首页。那么问题就来了,我们要访问的静态资源的路径没有写入到这里。就会被默认拦截,所以才导致加载失败的问题。解决方法就比较简单了,只需要把静态资源的路径扔进来就可以了,比如(具体路径看你个人的,我这个是在static/css这样的路径下。你也可以直接/*.css来放行)
/**
* 注册拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 拦截除了登录页的全部请求,不拦截静态资源
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/", "/login.html", "/user/login","/css/**","/fonts/**","/img/**","/js/**","/media/**");
}
如上,问题解决。