Spring Boot中Thymeleaf的几个模板位置

时间:2017-03-09 11:04:46

标签: spring-boot thymeleaf

目前Spring Boot允许具有Thymeleaf属性的spring.thymeleaf.prefix模板位置的一个值。

  

默认值为classpath:/templates/

我希望在jar之外为百万富翁模板设置另一个位置(但保留默认值),例如:

  

spring.thymeleaf.prefix = classpath:/templates/, file:/resources/templates

我是否必须为我想要的新位置定义另一个模板解析器?

2 个答案:

答案 0 :(得分:7)

在application.properties文件中定义以下设置

spring.thymeleaf.templateResolverOrder=1 

现在在你的自定义Bean中创建ITemplateResolver设置顺序为0以及前缀和后缀。这样春季启动会听两个地方

将顺序设置为0很重要

创建bean的示例可以是

@Bean
    public ClassLoaderTemplateResolver emailTemplateResolver() {
        ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
        emailTemplateResolver.setPrefix("mails/");
        emailTemplateResolver.setSuffix(".html");
        emailTemplateResolver.setTemplateMode(TemplateMode.HTML);
        emailTemplateResolver.setCharacterEncoding("UTF-8");
        emailTemplateResolver.setOrder(0);
        emailTemplateResolver.setCheckExistence(true);

        return emailTemplateResolver;
    }

MyExample

答案 1 :(得分:1)

为了定义多个模板位置,必须定义实现ITemplateResolver的Spring bean。

@Bean
public SpringResourceTemplateResolver firstTemplateResolver() {
    SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
    templateResolver.setPrefix("classpath:/templates/templatelocation/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode(TemplateMode.HTML);
    templateResolver.setCharacterEncoding("UTF-8");
    templateResolver.setOrder(0);
    templateResolver.setCheckExistence(true);

    return templateResolver;
}

@Bean
public ClassLoaderTemplateResolver secondTemplateResolver() {
    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setPrefix("templates/templatelocation/other/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode(TemplateMode.HTML);
    templateResolver.setCharacterEncoding("UTF-8");
    templateResolver.setOrder(1);
    templateResolver.setCheckExistence(true);

    return templateResolver;
}

您还可以查看blog post并详细说明用法。