几种常用的使用方法
1、赋值、字符串拼接
字符串拼接还有另外一种简洁的写法
2、条件判断 If/Unless
Thymeleaf中使用th:if和th:unless属性进行条件判断,下面的例子中, <a>
标签只有在 th:if
中条件成立时才显示:
th:unless
于 th:if
恰好相反,只有表达式中的条件不成立,才会显示其内容。
也可以使用 (if)?(then):(else)
这种语法来判断显示的内容
3、for 循环
iterStat称作状态变量,属性有:
- index:当前迭代对象的 index(从0开始计算)
- count: 当前迭代对象的 index(从1开始计算)
- size:被迭代对象的大小
- current:当前迭代变量
- even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算)
- first:布尔值,当前循环是否是第一个
- last:布尔值,当前循环是否是最后一个
4、URL
URL 在 Web 应用模板中占据着十分重要的地位,需要特别注意的是 Thymeleaf 对于 URL 的处理是通过语法 @{...}
来处理的。 如果需要 Thymeleaf 对 URL 进行渲染,那么务必使用 th:href
, th:src
等属性,下面是一个例子
设置背景
根据属性值改变背景
几点说明:
- 上例中 URL 最后的
(orderId=${o.id})
表示将括号内的内容作为 URL 参数处理,该语法避免使用字符串拼接,大大提高了可读性 @{...}
表达式中可以通过{orderId}
访问 Context 中的 orderId 变量@{/order}
是 Context 相关的相对路径,在渲染时会自动添加上当前 Web 应用的 Context 名字,假设 context 名字为 app,那么结果应该是/app/order
5、内联 js
内联文本:[[...]] 内联文本的表示方式,使用时,必须先用 th:inline="text/javascript/none"
激活, th:inline
可以在父级标签内使用,甚至作为 body 的标签。内联文本尽管比 th:text
的代码少,不利于原型显示。
js 附加代码:
js 移除代码:
6、内嵌变量
为了模板更加易用,Thymeleaf 还提供了一系列 Utility 对象(内置于 Context 中),可以通过 # 直接访问:
- dates : java.util.Date的功能方法类。
- calendars : 类似#dates,面向java.util.Calendar
- numbers : 格式化数字的功能方法类
- strings : 字符串对象的功能类,contains,startWiths,prepending/appending等等。
- objects: 对objects的功能类操作。
- bools: 对布尔值求值的功能方法。
- arrays:对数组的功能类方法。
- lists: 对lists功能类方法
- sets
- maps
...
下面用一段代码来举例一些常用的方法:
dates
strings
使用 Thymeleaf 布局
Spring Boot 2.0 将布局单独提取了出来,需要单独引入依赖:thymeleaf-layout-dialect。
定义代码片段
在页面任何地方引入:
th:insert 和 th:replace 区别,insert 只是加载,replace 是替换。Thymeleaf 3.0 推荐使用 th:insert 替换 2.0 的 th:replace。
返回的 HTML 如下:
下面是一个常用的后台页面布局,将整个页面分为头部,尾部、菜单栏、隐藏栏,点击菜单只改变 content 区域的页面
任何页面想使用这样的布局值只需要替换中见的 content 模块即可
也可以在引用模版的时候传参
layout 是文件地址,如果有文件夹可以这样写 fileName/layout:htmlhead
,htmlhead 是指定义的代码片段 如 th:fragment="copy"
文章示例项目
示例代码-https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-thymeleaf