Thymeleaf语法

  • 标准表达式

    • 变量表达式:${ }
    • 选择表达式:*{ }
    • URL链接表达式:@{ }
    • 条件表达式:三目运算符(表达式(then):(else))
    • 默认表达式:不带then(默认值为表达式的值,表达式 ?:(else,表达式为null时))
  • 表达式工具类

    • Objects工具类
    	/*
    	* 当obj不为空时,返回obj,否则返回default默认值
    	* 其同样适用于数组、列表或集合
    	*/
    	${#objects.nullSafe(obj,default)}
    	${#objects.arrayNullSafe(objArray,default)}
    	${#objects.listNullSafe(objList,default)}
    	${#objects.setNullSafe(objSet,default)}
    
    • Strings工具类
    • Dates工具类
    • Calendars工具类
    • Numbers工具类
    • Booleans工具类
    • Arrays工具类
    • Lists工具类
    • Sets工具类
    • Maps工具类
  • 迭代

    • 在Thymeleaf中,使用th:each标签可对集合类型进行迭代,支持的类型包括任何实现了java.util包下的List、Iterable、Enumeration、Iterator或Map的对象或者任意数组。(对Map迭代时,迭代变量是java.util.Map.Entry类型)
    	<tr th:each="book: ${books}">
    	   <td th:text="${book.name}">The Frontier City</td>
    	   <td th:text="${book.price}">20.3</td>
    	</tr>
    
    • 迭代时,可通过状态变量获取迭代的状态信息。
    	<div th:each="username,stat : ${user.username}">
    	   <span th:text="${username}"></span>
    	   <span th:text="${stat.index}"></span>
    	   <span th:text="${stat.count}"></span>
    	   <span th:text="${stat.size}"></span>
    	   <span th:text="${stat.current}"></span>
    	   <span th:text="${stat.even}"></span>
    	   <span th:text="${stat.first}"></span>
    	   <span th:text="${stat.last}"></span>
    	</div>
    
    • 状态变量包含的信息:
      • index,当前迭代下标,从0开始
      • count,当前迭代位置,从1开始
      • size,迭代变量中的总计数量
      • current,每次迭代的迭代变量
      • even/odd,当前迭代是偶数还是奇数
      • first,当前迭代的是不是第一个
      • last,当前迭代的是不是最后一个
  • 条件语句

    • if与unless语句
    • switch语句(switch-case语句)
  • 模板布局

    • 在Thymeleaf中使用th:include(Thymeleaf 3.0版本后不推荐使用),th:insert和th:replace属性实现模板布局
    • 使用th:fragment属性定义片段
    	<footer th:fragment="test">
    		<p>Welcome to China!</p>
    	</footer>
    
    • 使用如下语句引用模板
    	<div th:include="~{footer :: test}"></div> 
    	<div th:insert="~{footer :: test}"></div> 
    	<div th:replace="~{footer :: test}"></div>
    
    • 其中,~{…}为片段表达式,footer为被引用的模板名称(若引用本页面的片段,可略去模板名称或用this替代),test为th:fragment属性定义的片段名称(若片段不包含th:fragment属性,可使用CSS选择器替代),可简写为
    	<div th:include="footer :: test"></div>
    
    • 可在th:fragment中使用参数,需要在引用时为参数传值
    	<div th:fragment="test(val1,val2)">
    		<p th:text="${val1} + ${val2}"></p>
    	</div>
    
    • 可简写为
    	<div th:fragment="test">
    		<p th:text="${val1} + ${val2}"></p>
    	</div>
    
    • 使用th:remove属性删除片段,支持的属性:
      • all:删除标签及其所有子标签
      • body:不删除包含的标签,但删除其所有子代
      • tag:删除包含的标签,但不要删除其子标签
      • all-but-first:删除除第一个之外的所有包含标签的子标签
      • none
  • 局部变量

    • 在Thymeleaf中使用 th:with 属性来声明一个局部变量
    	<div th:with="user=${users[0]}">
    		<p>The name of the user is <span th:text="${user.username}">Jane</span>.</p>
    	</div>
    
    • 可在 th:with 属性中一次性定义多个变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值