Spring Boot、Thymeleaf 和字符串

Spring Boot, Thymeleaf and strings

您好,我正在使用 spring boot 2。4.x 并且我想使用 thymeleaf 作为我的模板引擎。

我添加了百里香发酵剂,并进行了以下测试

@Test
void name() {
    StringTemplateResolver stringTemplateResolver = new StringTemplateResolver();

    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.addTemplateResolver(stringTemplateResolver);

    Context ctx = new Context();
    ctx.setVariable("franco", "prova");

    String processedTemplate = templateEngine.process("<html>${franco}</html>", ctx);

    Assertions.assertThat(processedTemplate).isEqualTo("<html>prova</html>");
}

但是 templateEngine 没有替换变量,processedTemplate 变量的值与输入字符串相同。

我有什么错? 谢谢

Thymeleaf 不会直接处理 HTML 中的变量。您要么必须使用 text inlining 语法:

<html>[[${franco}]]</html>

或者像这样使用标准方式(即使用前缀为 th: 的属性):

<html th:text="${franco}" />

<html><span th:text="${franco}" /></html>

(另外,作为旁注,StringTemplateResolver 是默认的解析器,因此您不必配置它。您的完整代码可以如下所示。)

@Test
void name() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();

    Context ctx = new Context();
    ctx.setVariable("franco", "prova");

    String processedTemplate = templateEngine.process("<html>[[${franco}]]</html>", ctx);
    Assertions.assertThat(processedTemplate).isEqualTo("<html>prova</html>");
}