如果我们不使用thymeleaf-extras-springsecurity扩展的话,我们只需要在application.properties中配置一下thymeleaf使用html模板即可
# 使用html模板
spring.thymeleaf.mode=HTML
# 编译缓存,开发环境写false,更新页面可马上看到效果;生产环境用true,速度快一些,但更新页面后需重启应用才能看到效果
spring.thymeleaf.cache=false
如果我们需要使用到thymeleaf-extras-springsecurity扩展的话就需要添加方言SpringSecurityDialect,同时需要注意thymeleaf-extras-springsecurity4的版本需要和thymeleaf一致
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
<version>${thymeleaf.version}</version>
</dependency>
配置如下
@Bean
public SpringResourceTemplateResolver templateResolver(){
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
//配置模板
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
// 使用HTML的模式,也就是支持HTML5的方式,使用data-th-*的H5写法来写thymeleaf的标签语法
templateResolver.setTemplateMode(TemplateMode.HTML);
// 之前在application.properties中看到的缓存配置
templateResolver.setCacheable(true);
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
//模板引擎增加SpringSecurityDialect,让模板能用到sec前缀,获取spring security的内容
SpringTemplateEngine engine = new SpringTemplateEngine();
SpringSecurityDialect securityDialect = new SpringSecurityDialect();
Set<IDialect> dialects = new HashSet<>();
dialects.add(securityDialect);
engine.setAdditionalDialects(dialects);
engine.setTemplateResolver(templateResolver());
//允许在内容中使用spring EL表达式
engine.setEnableSpringELCompiler(true);
return engine;
}
//声明ViewResolver
@Bean
public ThymeleafViewResolver viewResolver(){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}