Thymeleaf 属性优先级

th:* 在同一个标​​签中写入多个属性会发生什么?例如:

<ul>
  <li th:each="item : ${items}" th:text="${item.description}">Item description here...</li>
</ul>

我们希望该th:each属性在之前执行,th:text以便我们得到我们想要的结果,但考虑到HTML / XML标准没有给标记中的属性编写顺序赋予任何意义,优先级必须在属性本身中建立机制,以确保它将按预期工作。

因此,所有Thymeleaf属性都定义了一个数字优先级,它确定了它们在标记中执行的顺序。这个顺序是:

编号 特征 属性
1 片段包含 th:insertth:replace
2 片段迭代 th:each
3 条件评估 th:ifth:unlessth:switchth:case
4 局部变量定义 th:objectth:with
5 一般属性修改 th:attrth:attrprependth:attrappend
6 具体属性修改 th:valueth:hrefth:src...
7 文字(标签正文修改) th:textth:utext
8 片段规范 th:fragment
9 片段删除 th:remove

这个优先级机制意味着如果属性位置被反转,上面的迭代片段将给出完全相同的结果(虽然它的可读性稍差):

<ul>
  <li th:text="${item.description}" th:each="item : ${items}">Item description here...</li>
</ul>

下一章:Thymeleaf 注释和块

1. 标准 HTML/XML 注释标准HTML / XML注释<!-- ... -->可以在Thymeleaf模板中的任何位置使用。Thymeleaf将不会处理这些评论中的任何内容,并将逐字复制到结 ...