Skip to content

片段规范语法

片段表达式的语法非常简单明了。它有三种不同的格式:

  • "~{templatename::selector}"包括将指定的标记选择器应用于名为 的模板后生成的片段templatename。请注意,selector可以仅仅是一个片段名称,因此您可以指定像上面那样简单的~{templatename::fragmentname}名称~{footer :: copy}。

INFO

标记选择器语法由底层 AttoParser 解析库定义,类似于 XPath 表达式或 CSS 选择器。更多信息请参见附录 C。

  • "~{templatename}"包含名为“.”的完整模板templatename。

INFO

th:insert请注意,您在/标签中使用的模板名称th:replace必须能够被模板引擎当前使用的模板解析器解析。

  • ~{::selector}"或者"~{this::selector}"插入与该表达式匹配的同一模板片段。如果在表达式出现的模板中找不到匹配项,则会遍历模板调用(插入selector)堆栈,直到找到匹配项为止。selector

以上示例中的andtemplatename和 or都可以是功能齐全的表达式(甚至是条件表达式!),例如:selector

html
<div th:insert="~{ footer :: (${user.isAdmin}? #{footer.admin} : #{footer.normaluser}) }"></div>

片段可以包含任何th:*属性。这些属性会在片段被包含到目标模板(带有th:insert/th:replace属性的模板)后进行评估,并且它们可以引用该目标模板中定义的任何上下文变量。

INFO

这种片段方法的一大优势在于,您可以将片段编写在浏览器可以完美显示的页面中,并具有完整且有效的标记结构,同时仍然能够让 Thymeleaf 将它们包含在其他模板中。