12.1. 表达式内联

尽管标准方言允许我们使用标签属性做几乎任何事情,但某些情况下,我们还是更喜欢直接在HTML文本里书写表达式。比如,我们更喜欢这样写:

<p>Hello, [[${session.user.name}]]!</p>

而不是写成这样:

<p>Hello, <span th:text="${session.user.name}">Sebastian</span>!</p>

在Thymeleaf里,[[...]]或者[(...)]之间的表达式被当做内联的表达式。在它们里面,我们可以使用任何类型的表达式。这些表达式在th:text或者th:utext属性里面也同样有效。

注意:[[...]]对应于th:text(即结果会是转义的HTML),[(...)]对应于th:utext,不会执行任何的HTML转义。所以,如果有一个变量,类似于msg = 'This is <b>great!</b>'。考虑下面的片段:

<p>The message is "[(${msg})]"</p>

结果里的<b>标签没有被转义:

<p>The message is "This is <b>great!</b>"</p>

如果像下面这样转义:

<p>The message is "[[${msg}]]"</p>

结果会是转义的HTML:

<p>The message is "This is &lt;b&gt;great!&lt;/b&gt;"</p>

注意:在我们的标记里,每一个标签主体里,文本内联是默认激活的——不是标签自身,所以我们不需要做任何事情来启用它。

Last updated