开发学院

您的位置:首页>教程>正文

教程正文

Thymeleaf 3.0教程:10 属性优先级

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

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

  我们期望每个属性在文本之前执行,这样我们就可以得到我们想要的结果,但是考虑到事实上,HTML/XML标准并没有给标签中属性的编写顺序赋予任何意义,所以必须在属性本身中建立一个优先机制,以确保它能像预期的那样工作。

  因此,百里香叶的所有属性都定义了一个优先级,它决定了它们在标签中的执行顺序。如下表:

优先级功能属性
1 片段包含th:insert/th:replace
2迭代th:each
3条件评估th:if/th:unless/th:switch/th:case
4局部变量定义th:object/th:with
5常规属性修改th:attr/th:attrprepend/th:attrappend
6特定属性修改th:value/th:href/th:src
7文本(标签正文修改)th:text/th:utext
8片段声明th:fragment
9片段移除th:remove

  这种优先机制意味着,如果属性位置颠倒,上面的迭代片段将给出完全相同的结果(尽管它的可读性稍差):

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