在学习和使用 Thymeleaf 之前,首先要在页面的 html 标签中声明名称 th 空间,例如。
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org/"> <head> <meta charset="UTF-8"> <title>Thymeleaf模板引擎</title> </head> <body> <!-- ... --> </body> </html>
注意:在 html 标签中声明此名称空间,可避免编辑器出现 html 验证错误。但是,这并非必须进行的,即使我们不声明该命名空间,也不影响 Thymeleaf 的使用。
Thymeleaf 作为一种模板引擎,它拥有自己的语法规则。Thymeleaf 基础语法如下:
在 Thymeleaf 模板引擎中,支持多种表达式,如下:
变量表达式:${...}
选择变量表达式:*{...}
链接表达式:@{...}
国际化表达式:#{...}
片段引用表达式:~{...}
注意,上面每种表达式的具体含义和用法将在后续章节逐一介绍。
文本字面量:'one text', 'Another one!', ...
数字字面量:0, 34, 3.0, 12.3, ...
布尔字面量:true, false
Null 文本:null
文字标记:one, sometext, main, ...
字符串连接:+
字面量替换:|The name is ${name}|
算术运算符:+, -, *, /, %
减号(单目运算符):-
布尔运算符:and, or
布尔否定法(单目运算符):!, not
比较运算符:>, <, >=, <= (gt, lt, ge, le)
等价运算符:==, != (eq, ne)
If-then:(if) ? (then)
If-then-else:(if) ? (then) : (else)
Default: (value) ?: (defaultvalue)
无(空)操作:_
注意:上面所有这些功能都可以组合和嵌套:'User is of type ' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))
th 属性,在 Thymeleaf 模板引擎中,提供了大量的 th 属性,这些属性可以直接在 HTML 标签中使用,其中常用 th 属性如下:
th:id 替换 HTML 的 id 属性
th:text 文本替换,转义特殊字符
th:utext 文本替换,不转义特殊字符
th:object 在父标签选择对象,子标签使用 *{…} 选择表达式选取值。没有选择对象,那子标签使用选择表达式和 ${…} 变量表达式是一样的效果。同时即使选择了对象,子标签仍然可以使用变量表达式。
th:value 替换 value 属性
th:with 局部变量赋值运算
th:style 设置样式
th:onclick 点击事件
th:each 遍历,支持 Iterable、Map、数组等。
th:if 根据条件判断是否需要展示此标签
th:unless 和 th:if 判断相反,满足条件时不显示
th:switch 与 Java 的 switch case语句类似,通常与 th:case 配合使用,根据不同的条件展示不同的内容
th:fragment 模板布局,类似 JSP 的 tag,用来定义一段被引用或包含的模板片段
th:insert 布局标签;将使用 th:fragment 属性指定的模板片段(包含标签)插入到当前标签中。
th:replace 布局标签;使用 th:fragment 属性指定的模板片段(包含标签)替换当前整个标签。
th:selected select 选择框选中
th:src 替换 HTML 中的 src 属性
th:inline 内联属性;该属性有 text、none、javascript 三种取值,在 <script> 标签中使用时,js 代码中可以获取到后台传递页面的对象。
th:action 替换表单提交地址
关于这些 th 属性的详细用法,将在后续章节逐一介绍。