百里香叶不会取代变量

时间:2017-10-12 12:09:58

标签: java thymeleaf

我对百里香的新手很抱歉,如果这是一个虚假的问题。我想用百里香叶3创造一个“你好世界”。 我必须使用存储在数据库中的模板进行操作,我只能将它们作为文本。

我已经读过我需要使用StringTemplateResolver才能实现这一点。

我做了一个例子,但它没有替换我的变量$ {user},我不明白我在哪里弄错了。

// define TemplateEngine
TemplateEngine templateEngine = new TemplateEngine();
StringTemplateResolver templateResolver = new StringTemplateResolver();
templateEngine.setTemplateResolver(templateResolver);

String htmlTemplate = "<b>${user}</b>";
Context context = new Context();
context.setVariable("user", "Ray Donovan");

String res = templateEngine.process(htmlTemplate, context);
System.out.println(res); // it prints out: <b>${user}</b>

有人可以向我强调这一点吗?

提前致谢。

2 个答案:

答案 0 :(得分:5)

在官方文件Thymeleaf #text-inlining中报道:

  

[[...]]之间的表达式被认为是表达内联   Thymeleaf,在其中你可以使用任何类型的表达   也可以在th:text属性中有效。

这样说,你必须使用双方括号表示法。 您应该使用<b>${user}</b>而不是<b>[[${user}]]</b>

答案 1 :(得分:3)

您可以参考@araknoids回答或将htmlTemplate更新为

String htmlTemplate = "<b th:text="${user}"></b>";