[英]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
file在application.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;
}
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.