前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Thymeleaf 模板布局和属性优先级

Thymeleaf 模板布局和属性优先级

作者头像
爱敲代码的猫
发布2019-10-17 13:41:05
5420
发布2019-10-17 13:41:05
举报

th:insert,th:replace,th:include三者的区别

  • th:insert 它将简单地插入指定的片段作为正文的标签
  • th:replace 用指定实际片段来替换其主标签
  • th:include 类似于 th:insert ,但不是插入片段它只插入此片段的内容(3.x版本后,不再推荐使用)

举个栗子用上面三种方式引用下面这段:

<footer th:fragment="copy">
  &copy; 2019 https://blog.eunji.cn"爱敲代码的猫"
</footer>

引用:

<body>

  ...

  <div th:insert="footer :: copy"></div>

  <div th:replace="footer :: copy"></div>

  <div th:include="footer :: copy"></div>
  
</body>

最终会是下面这种效果:

<body>
  
  ...

  <div>
    <footer>
      &copy; 2019 https://blog.eunji.cn"爱敲代码的猫"
    </footer>
  </div>

  <footer>
    &copy; 2019 https://blog.eunji.cn"爱敲代码的猫"
  </footer>

  <div>
    &copy; 2019 https://blog.eunji.cn"爱敲代码的猫"
  </div>
  
</body>

属性优先级

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: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>
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱敲代码的猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • th:insert,th:replace,th:include三者的区别
  • 属性优先级
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档