我将Thymeleaf用于我的电子邮件模板,并且使用Google谷歌搜索并且能够使用以下配置成功运行代码:-

@Configuration
public class TemplateEngineConfig {

    @Autowired
    private MailConfigProps mailConfigProps;

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.addTemplateResolver(templateResolver());
        return templateEngine;
    }

    private TemplateResolver templateResolver() {
        TemplateResolver resolver = new ClassLoaderTemplateResolver();
        resolver.setPrefix(mailConfigProps.getTemplatePath());
        resolver.setSuffix(".html");
        resolver.setTemplateMode("HTML5");
        resolver.setOrder(1);
        resolver.setCacheable(true);
        return resolver;
    }
}


除了setOrder外,这里的所有内容对我来说都是可以理解的。我尝试在不同的地方查找它,我得到的唯一信息是“为链中的模板引擎设置新订单。该订单应以1开头。”

以下是文档说明:

setOrder
public void setOrder(Integer order)
Sets a new order for the template engine in the chain. Order should start with 1.
Parameters:
order - the new order.
Can someone please share why `setOrder` is there and when should it be used in my application and what should be the appropriate values to be set in different scenarios.


如果我不提供此值会怎样?

最佳答案

您的应用程序可能使用不同类型的模板,例如HTML, TXT or String等。这些模板可能具有多种类型的模板解析器。那些多模板解析器可以在template engine中注册。应用程序中的所有视图解析器都按有序链执行,直到其中一个能够解析该视图为止。因此,TemplateResolver#setOrder基本上决定了链的顺序。有一个resolvablePatterns属性,用于确定模板解析器是否将视图名称解析为该解析器。您还可以通过resolvablePatterns设置setResolvablePatterns

templateResolver.setResolvablePatterns(Collections.singleton("text/*"));

09-30 18:04