簡體   English   中英

Spring Boot 中 Thymeleaf 的幾個模板位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM