变量表达式 ${}
使用方法:直接使用th:xx = "${}" 获取对象属性 。例如:articles是一个集合,集合中的元素就是一个对象,articles[0]表示集合中第一个对象
<div th:text="hello"></div><form id="articleForm"><input id="id" name="id" th:value="${articles[0].id}"/><input id="author" name="author" th:value="${articles[0].author}"/><input id="content" name="content" th:value="${articles[0].content}"/></form>

选择变量表达式 *{}
使用方法:首先通过th:object 获取对象,然后使用th:xx = "*{}"获取对象属性。显示效果和上面的例子是一样的。
<form id="articleForm" th:object="${articles[0]}"><input id="id" name="id" th:value="*{id}"/><input id="author" name="author" th:value="*{author}"/><input id="content" name="content" th:value="*{content}"/></form>
链接表达式 @{}
使用方法:通过链接表达式@{}直接拿到应用路径,然后拼接静态资源路径。例如:
<link rel="stylesheet" th:href="@{/webjars/bootstrap/css/bootstrap.min.css}"><script th:src="@{/webjars/jquery/jquery.min.js} "></script><script th:src="@{/webjars/bootstrap/js/bootstrap.min.js}"></script>
html页面实际引入效果如下(这种方式会将webjars的版本号暴露出来,一定程度上造成安全问题,所以使用webjars就别用链接表达式):

其它表达式
在基础语法中,默认支持字符串连接、数学运算、布尔逻辑和三目运算等。例如:
<div th:text="${'I am '+(articles[0].author!=null?articles[0].author:'NoBody')}"></div>
当articles[0].author不为null的时候,显示:zimug,否则显示:NoBody

二、迭代循环
想要遍历List集合很简单,配合th:each 即可快速完成迭代。但是我们通常有一些需求,在集合的迭代过程还可以获取状态变量。状态变量可用于获取集合的下标/序号、总数、是否为单数/偶数行、是否为第一个/最后一个。例如:
<table class="table"><tr><td>下标</td><td>序号</td><td>作者</td><td>教程名称</td><td>内容</td></tr><tr th:each="item,stat : ${articles}" th:class="${stat.even}?'even':'odd'"><td th:text="${stat.index}"></td><td th:text="${stat.count}"></td><td th:text="${item.author}"></td><td th:text="${item.title}"></td><td th:text="${item.content}"></td></tr></table>
迭代下标变量用法:
状态变量定义在一个th:每个属性和包含以下数据:
-
index:当前迭代索引,从0开始。这是索引属性。
-
count:当前迭代序号,从1开始。这是序号属性。
-
size:元素的总量迭代变量。这是大小属性。
-
current:变量为每个迭代,当前正迭代的元素
-
even/odd:是否当前迭代是奇数还是偶数,布尔属性。
-
first:是否第一个当前迭代,布尔属性。
-
last:是否最后一个当前迭代,布尔属性。
显示效果如下:

其中表格隔行换色,即奇数行换色,是通过stat.even实现的。为奇数行单独设置背景颜色
<style type="text/css">.odd{
background-color: #7d7d7d;}</style>
三、条件判断
条件判断通常用于动态页面的初始化,例如:
<div th:if="${articles}"><div>文章列表存在</div></div>
条件判断表达式可以是如下类型:
-
boolean 类型并且值是 true, 返回 true
-
数值类型并且值不是 0, 返回 true
-
字符类型(Char)并且值不是 0, 返回 true
-
String 类型并且值不是 "false", "off", "no", 返回 true
-
不是 boolean, 数值, 字符, String 的其他类型, 返回 true
-
对象值是 null, 返回 false
如果想取反则使用unless 例如:
<div th:unless="${articles}"><div>文章列表暂无.</div></div>
本文介绍Thymeleaf模板引擎的基础语法,包括变量表达式的使用、链接表达式、迭代循环及状态变量的应用,以及如何进行条件判断。
6503

被折叠的 条评论
为什么被折叠?



