我正在使用Spring Boot和一些模板来帮助生成一些动态电子邮件。不幸的是,模板引擎没有渲染我的变量。
public String generateProblemOfTheDay(Model model) throws IOException {
Context ctx = new Context();
ctx.setVariable("potd", "Test Value");
//Process the template with the proper context variables
String html = templateEngine.process("index", ctx);
PrintWriter pWriter = new PrintWriter(Paths.PROBLEM_OF_THE_DAY_OUTPUT, "UTF-8");
pWriter.println(html);
pWriter.close();
log.info("done!");
log.info(html);
return html;
}
.
.
<tr>
<td style="font-family:'Open Sans', Arial, sans-serif; font-size:15px; line-height:18px; color:#30373b;">
<br />
<div class="question-description">
[[${potd}]]
</div>
</td>
</tr>
.
.
我不确定为什么模板引擎没有正确处理变量。这是添加变量的最佳方式吗?
<label style="font-size: 12px;padding-bottom: 1em;" th:text="${potd}">Test</label>
添加类似下面的内容确实有用..我见过很多人使用标准的花括号表示法没有问题,并想知道什么是合适的。
答案 0 :(得分:1)
Inlined expressions were changed from thymeleaf 2 to 3。我猜你正在使用百里香叶2,这意味着你需要attribute th:inline="text"
in order to get your expression to work。
<div class="question-description" th:inline="text">
[[${potd}]]
</div>
如果你升级到百里香叶3,这些表达式将开箱即用(甚至建议你删除th:inline="text"
)。至于你应该用哪种方式编写表达式...它基于意见。在大多数情况下,我喜欢在标签中直接使用th:text
。如果要将大量字符串附加在一起,则可以使用另一种方式。例如:
<span>Your answer was: [[${answer}]]</span>
比
更容易阅读<span th:text="${'Your answer was:' + answer}"/>