[英]Several template locations for Thymeleaf in Spring Boot
目前Spring Boot
允許使用spring.thymeleaf.prefix
屬性為Thymeleaf
模板位置設置一個值。
默認值為
classpath:/templates/
。
我想在 jar 外為 thymeleaf 模板設置另一個位置(但保留默認位置),例如:
spring.thymeleaf.prefix = classpath:/templates/, file:/resources/templates
我是否必須為我想要的新位置定義另一個模板解析器?
在application.properties
文件中定義設置
spring.thymeleaf.templateResolverOrder=1
現在,在創建 ITemplateResolver 的自定義 Bean 中,將 order 以及前綴和后綴設置為 0。 這樣 spring boot 會在兩個地方都聽
將 order 設置為 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;
}
為了定義多個模板位置,您必須定義實現 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;
}
您還可以查看詳細介紹用法的博客文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.