SpringBoot配置多个不同Thymeleaf模板位置

48 篇文章 0 订阅
38 篇文章 2 订阅

最近开发当中需要在SpringBoot配置多个不同Thymeleaf位置,特此记录下相关过程

默认Thymeleaf配置

当我们集成thymeleaf后,会有一个默认的配置信息,可以在配置文件当中配置默认的信息,修改路径,前后缀等等参数

spring:
  thymeleaf:
    prefix: classpath:/templates/
    mode: HTML
    cache: true
    check-template: true
    encoding: UTF-8
    suffix: .html
    template-resolver-order: 

具体实现则是通过ThymeleafAutoConfiguration类中进行的自动配置

        @Bean
        SpringResourceTemplateResolver defaultTemplateResolver() {
            SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
            resolver.setApplicationContext(this.applicationContext);
            resolver.setPrefix(this.properties.getPrefix());
            resolver.setSuffix(this.properties.getSuffix());
            resolver.setTemplateMode(this.properties.getMode());
            if (this.properties.getEncoding() != null) {
                resolver.setCharacterEncoding(this.properties.getEncoding().name());
            }

            resolver.setCacheable(this.properties.isCache());
            Integer order = this.properties.getTemplateResolverOrder();
            if (order != null) {
                resolver.setOrder(order);
            }

            resolver.setCheckExistence(this.properties.isCheckTemplate());
            return resolver;
        }

配置多个thymeleaf模板位置

由于默认配置只能设置一个thymeleaf模板位置,所以当需要配置多个模板位置的时候就需要自行定义模板解析即可

@Configuration
public class ThymeleafConfig {
	
	/**
	* 这里重写默认的解析配置
	*/
    @Bean
    public SpringResourceTemplateResolver defaultTemplateResolver(){
        SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver();
        springResourceTemplateResolver.setOrder(1); //解析匹配优先级  从1开始进行匹配
        springResourceTemplateResolver.setCacheable(false); //是否缓存
        springResourceTemplateResolver.setTemplateMode(TemplateMode.HTML); //模板类型
        springResourceTemplateResolver.setSuffix(".html"); //匹配后缀
        springResourceTemplateResolver.setPrefix("classpath: /theme/"); //匹配前缀
        springResourceTemplateResolver.setCharacterEncoding("UTF-8");  //文件编码
        springResourceTemplateResolver.setCheckExistence(true);   //匹配前是否检查文件是否存在   如果需要存在多个TemplateResolver解析器 这里需要设置成true 不然不会进入到后面的解析器
        return springResourceTemplateResolver;
    }
    /**
	* 这里写第二个解析配置
	*/
    @Bean
    public SpringResourceTemplateResolver springResourceTemplateResolver(){
        SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver();
        springResourceTemplateResolver.setOrder(2);
        springResourceTemplateResolver.setCacheable(false);
        springResourceTemplateResolver.setTemplateMode(TemplateMode.HTML);
        springResourceTemplateResolver.setSuffix(".html");
        springResourceTemplateResolver.setPrefix("file: d:/test/");
        springResourceTemplateResolver.setCharacterEncoding("UTF-8");
        springResourceTemplateResolver.setCheckExistence(false); //最后一个解析器需要设置为false
        return springResourceTemplateResolver;
    }
}

注意事项

  1. ClassLoaderTemplateResolver,FileTemplateResolver,UrlTemplateResolver,SpringResourceTemplateResolver 这四个解析器都可以解析thymeleaf模板,不过根据名称就能知道什么情况下使用什么解析器,就不详细说明了。
  2. defaultTemplateResolver 是否一定要重写?不一定,如果不重写也没关系只是还能解析到默认配置而已
  3. order和checkExistence,如果前一个order的TemplateResolver设置checkExistence为false,后续order的TemplateResolver将无法正常解析。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值