我们有以下thymeleaf配置:
@Bean
public TemplateEngine emailTemplateEngine() {
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(htmlTemplateResolver());
templateEngine.addTemplateResolver(stringTemplateResolver());
return templateEngine;
}
private ITemplateResolver htmlTemplateResolver() {
final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setOrder(1);
templateResolver.setResolvablePatterns(Collections.singleton("templates/*"));
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
templateResolver.setCacheable(false);
return templateResolver;
}
private ITemplateResolver stringTemplateResolver() {
final StringTemplateResolver templateResolver = new StringTemplateResolver();
templateResolver.setOrder(2);
templateResolver.setTemplateMode(TemplateMode.TEXT);
templateResolver.setCacheable(false);
return templateResolver;
}
那是 - 两个解析器,一个用于html,一个用于文本。
我们将html用于电子邮件正文,文本用于主题。
鉴于:
"[[${values.createdBy}]] created a widget"
values.createdBy
的Brock O'Samson
值我们看到了结果:Brock O'Samson
任何想法配置什么? “模板模式”似乎是一个明显的解决方案,但它已经设置为TEXT。
两种独立的方法:
stringTemplateResolver()
中的模板模式设置为TemplateMode.LEGACYHTML5
(已弃用)