Thymeleaf语法基础
文本标签 :
th:text / th:utext
th:text 进行文本替换 不会解析html
th:utext 进行文本替换 会解析html
字符串连接:
拼接字符串通过 + 或者 | 进行拼接
*{}和 ${}表达式
正常情况下 *{…} 和 ${…}是一样的,但是 *{…} 一般和 th:object 进行一起使用来完成对象属性的简写。
使用${}操作方式
<p th:text="${user.name}">
</p><p th:text="${user.age}"></p>
使用*{}操作方式
<div th:object="${user}">
<p th:text="*{name}"></p>
<p th:text="*{age}">
</div>
@{…}链接网址表达式
一般和 th:href、th:src进行结合使用,用于显示Web 应用中的URL链接。
通过@{…}表达式Thymeleaf 可以帮助我们拼接上web应用访问的全路径,
同时我们可以通过()进行参数的拼接
<img src="@{/static/images/xx.png}"/>
<a href="@{/user(id=${user.id})}">查看</a>
条件判断
th:if / th:unless
th:if 当条件为true则显示。
th:unless 当条件为false 则显示。
<p th:if="${flag}">if判断</p>
显示结果为
<p>判断</p>
<p th:unless="!${flag}">unless判断</p>
显示结果为
<p>unless判断</p>
Switch
th:switch 我们可以通过switch来完成类似的条件表达式的操作。
<div th:switch="${user.name}">
<p th:case="zhangsan">user is zhangsan</p>
<p th:case="lisi">user is lisi</p>
</div>
for循环
th:each 遍历集合
<tr th:each="user:${userList}" th:class="${userStat.odd}?'odd'">
<td th:text="user.name"></td>
<td th:text="user.age"></td>
</tr>
我们可以通过便利的变量名+Stat 来获取索引 是否是第一个或最后一个等。
便利的变量名+Stat称作状态变量,其属性有:
index:当前迭代对象的迭代索引,从0开始,这是索引属性;
count:当前迭代对象的迭代索引,从1开始,这个是统计属性;
size:迭代变量元素的总量,这是被迭代对象的大小属性;
current:当前迭代变量;
even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算);
first:布尔值,当前循环是否是第一个;
last:布尔值,当前循环是否是最后一个
Elvis运算符
Elvis运算可以理解成简单的判断是否为null的三元运算的简写,
如果值为nullzhe显示默认值,如果不为null 则显示原有的值。
<p th:text="${user.name}?'姓名为空'"></p>
如果没有获取到name值得话,那么结果为:
<p>姓名为空</p>
三元表达式
我们可以在thymeleaf 的语法中使用三元表达式 具体使用方法是在th:xxx 中通过 表达式?1选项:2选项。
内联
如何使用内连操作
我们可以通过 在父标签声明 th:inline=“text” 来开启内联操作。
当然如果想整个页面使用可以直接声明在body上即可。具体使用方式如下面代码所示
<div th:inline="text">
<p>hello,[[${user.name}]]</p>
</div>
等同于
<p th:text="${user.name}"></p>
JavaScript内联
如果我们想在JavaScript 中使用内联操作,需要在 script 标签上声明
th:inline=“javascript” 然后我们就可以 script 标签中使用内联操作了。
具体使用方式如下面代码所示。
<script th:inline="javascript">
var username = [[${user.name}]]
</script>
模板布局
预定义的工具对象
dates
处理日期数据 生成,转换,获取日期的具体天数 年数
dates.format
<span th:text="${#dates.format(date, 'yyyy-MM-dd HH:mm')}"></span>
dates.listFormat
<p th:text="${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}"></p>
dates.day
<p th:text="${#dates.day(date)} "></p>
dates.month
<p th:text="${#dates.month(date)}"></p>
dates.monthName
<p th:text="${#dates.monthName(date)}"></p>
dates.monthNameShort
<p th:text="${#dates.monthNameShort(date)} "></p>
dates.year
<p th:text="${#dates.year(date)}"></p>
dates.dayOfWeek
<p th:text="${#dates.dayOfWeek(date)}"></p>
dates.dayOfWeekName
<p th:text="${#dates.dayOfWeekName(date)}"></p>
dates.dayOfWeekNameShort
<p th:text="${#dates.dayOfWeekNameShort(date)}"></p>
dates.hour
<p th:text="${#dates.hour(date)}"></p>
dates.minute
<p th:text="${#dates.minute(date)}"></p>
dates.second
<p th:text="${#dates.second(date)}"></p>
dates.millisecond
<p th:text="${#dates.millisecond(date)} "></p>
dates.createNow
<p th:text="${#dates.createNow()}"></p>
dates.create
<p th:text="${#dates.create('2019','05','30')}"></p>
<p th:text="${#dates.create('2019','05','31','10','18')}"></p>
<p th:text="${#dates.create('2019','05','30','10','18','34')}"></p>
dates.createToday
<p th:text="${#dates.createToday()}"></p>