我们有以下 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 作为电子邮件正文,使用文本作为主题。
给定:
主题"template"(纯字符串),如下所示:
"[[${values.createdBy}]] created a widget"
a
values.createdBy
Brock O'Samson
的值
我们看到的结果是:Brock O'Samson
有什么想法要配置吗? “模板模式”似乎是显而易见的解决方案,但它已经设置为文本。
最佳答案
两种独立的方法:
使用th:utext标签属性
将
stringTemplateResolver()
中的模板模式设置为TemplateMode.LEGACYHTML5
(已弃用)
关于java - 如何防止 Thymeleaf 对我的模板进行 url 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951544/