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>