我将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/*"));