目前Spring Boot
允许具有Thymeleaf
属性的spring.thymeleaf.prefix
模板位置的一个值。
默认值为
classpath:/templates/
。
我希望在jar之外为百万富翁模板设置另一个位置(但保留默认值),例如:
spring.thymeleaf.prefix = classpath:/templates/, file:/resources/templates
我是否必须为我想要的新位置定义另一个模板解析器?
答案 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;
}
答案 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并详细说明用法。