Thymeleaf 教程

基础语法

在学习和使用 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 属性

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 属性的详细用法,将在后续章节逐一介绍。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号