我正在使用Thymeleaf作为我的电子邮件模板,我正在谷歌搜索,并能够使用以下配置成功运行代码: -
@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.
如果我没有提供此值,会发生什么?
答案 0 :(得分:1)
您的应用可能会使用不同类型的模板,例如HTML, TXT or String
等。这些模板解析器可能有多种类型。可以使用template engine
注册这些多个模板解析程序。在有序链中执行的应用程序中的所有视图解析器,直到其中一个能够解析该视图。因此,TemplateResolver#setOrder
基本上决定了链的顺序。有一个resolvablePatterns
属性,用于确定模板解析器是否会考虑通过它来解析视图名称。您还可以设置resolvablePatterns
setResolvablePatterns
templateResolver.setResolvablePatterns(Collections.singleton("text/*"));