简体   繁体   English

Spring Boot 中 Thymeleaf 的几个模板位置

[英]Several template locations for Thymeleaf in Spring Boot

Currently Spring Boot allow one value for the Thymeleaf templates location with the spring.thymeleaf.prefix property.目前Spring Boot允许使用spring.thymeleaf.prefix属性为Thymeleaf模板位置设置一个值。

The default value is classpath:/templates/ .默认值为classpath:/templates/

I want to have another location for the thymeleaf templates (but keep the default one), outside the jar, for example:我想在 jar 外为 thymeleaf 模板设置另一个位置(但保留默认位置),例如:

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

Do i have to define another template resolver for the new location i want ?我是否必须为我想要的新位置定义另一个模板解析器?

Define the setting in the application.properties fileapplication.properties文件中定义设置

spring.thymeleaf.templateResolverOrder=1 

Now in your custom Bean which creates ITemplateResolver set order to 0 along with prefix and suffix.现在,在创建 ITemplateResolver 的自定义 Bean 中,将 order 以及前缀和后缀设置为 0。 This way spring boot will listen to both places这样 spring boot 会在两个地方都听

Setting order to 0 is important将 order 设置为 0 很重要

An example of bean creation can be 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 我的例子

In order to define multiple template locations, you must define Spring beans implementing ITemplateResolver.为了定义多个模板位置,您必须定义实现 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;
}

You can also check out the blog post detailing the usage.您还可以查看详细介绍用法的博客文章

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM