向 Spring Boot 添加自定义 Thymeleaf 模板解析器

问题描述 投票:0回答:3

默认情况下,Spring Boot 应用程序在 classpath://templates

下搜索 thymeleaf 模板

我们如何添加一个解析器 例如,我们需要使用 FileTemplateResolver 从本地目录中搜索模板,如 "c:\MyTemplates"

spring spring-mvc thymeleaf
3个回答
17
投票

您可以通过调用 setTemplateResolvers 方法或使用 FileTemplateResolver 调用 addTemplateResolver 方法在

TemplateEngine
上添加更多模板解析器。

@Configuration
public class ThymeleafExtension {

    @Autowired
    private SpringTemplateEngine templateEngine;

    @PostConstruct
    public void extension() {
        FileTemplateResolver resolver = new FileTemplateResolver();
        resolver.setPrefix("D:\\templates\\");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("HTML5");
        resolver.setOrder(templateEngine.getTemplateResolvers().size());
        resolver.setCacheable(false);
        templateEngine.addTemplateResolver(resolver);
    }
}

0
投票

对之前的答案略有改进:

@Configuration
public class ThymeleafConfig {

    public ThymeleafConfig(TemplateEngine templateEngine) {
        templateEngine.addTemplateResolver(new StringTemplateResolver());
    }
}

0
投票

在春季启动时,Thymealeaf 解析器会自动连接到

TemlpateEnging
。您可以使用
@Bean
注释执行与 @m4rtin 答案非常相似的操作:

@Configuration
public class ThymeleafExtension {

  @Bean
  public ITemplateResolver myFileTemlpateResolver() {
    FileTemplateResolver resolver = new FileTemplateResolver();
    resolver.setPrefix("D:\\templates\\");
    resolver.setSuffix(".html");
    resolver.setTemplateMode("HTML5");
    resolver.setOrder(templateEngine.getTemplateResolvers().size());
    resolver.setCacheable(false);
    return resolver;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.