1.Thmeleaf的基本语法
大部分的Thmeleaf表达式都直接被设置到HTML节点中,作为HTML节点的一个属性存在,这样同一个模板文件既可以使用浏览器直接打开,也可以放到服务器中用来显示数据,并且在样式上基本不会存在差异。
2.Thmeleaf支持的模板类型
2.1 HTML模板
<input type="text" th:value="angus">
上面这种情况,HTML模式并不会抛出异常,因为Thmeleaf并不会进行严格的认证,但对一些明显的格式错误会抛出异常。如:
<input type="text" th:value="angus"
2.2 XML模板
Thmeleaf在处理xml时只会对文档进行形式上的检查,而不会进行实质型的检查。如xml文件中的节点没有关闭。
2.3 Thmeleaf API
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
2.3.1 处理HTML
按照一定的语法规则将逻辑写入HTML页面,然后再把这些"加工"过的HTML字符串交给thmeleaf去处理,Thmeleaf处理器会处理他们,最后输出真正的,被渲染的html.
2.3.2 变量处理
<input type="text" th:value="${data.name"} />
上面的模板中,th:value属性来展示data对象的name属性。
2.3.3 遍历集合
<table> <tr th:each="data:${datas}"> <td th:text="${data.name}">Angus</td> </tr> </table>
使用th:each属性进行数据遍历,节点变量为data,在td中使用td:text将data的name属性进行输出
3.配置Thmeleaf
在配置文件application.properties文件中配置Thmeleaf
spring.thmeleaf.mode=HTML #模板模式,默认为html5 spring.thmeleaf.prefix=classpath:/templates/ #模板前缀,默认为classpath:/templates/ spring.thmeleaf.suffix=.html #模板后缀
spring.thmeleaf.cache:true #是否打开模板配置,默认为true
spring.thmeleaf.check-template;true #是否处理模板前检查其是否存在,默认为true
spring.thmeleaf.check-template-location:true #是否检查模板位置,默认为true.
spring.thmeleaf.content-type:text/html #默认的content-type值
spring.thmeleaf.enabled:true #是否开启视图解析,默认为true
4.静态资源处理
4.1 引入css
<link rel="stylesheet" type="text/css" th:href="@{/common.css}" />
默认位置是/static/
4.2 引入javascript
<script type="text/javascript" src="../js/test.js th:src="@{/js/test.js}"
5.文本处理
在thmeleaf中,外部的文本片段通常被称为message,通常保存在properties文件里面,因此每一个文本信息都有一个key作为标识。
<span th:text="#{page.myText}">This is propertype text.<span>
在配置文件中是如下内容
page.myText=This is config text
获取变量中的属性:
<span th:text="${user[‘parent']['age']}"></span>
获取List中的第一个元素
<span th:text="${users[0].name}'></span>
获取Map中的元素:
<span th:text="${userMap['key1'].name"></span>
获取数组中的元素
<span th:text="${userArr[1].name}"></span>
链接表达式
Thmeleaf的链接表达式
@{......}
<a href="view.html" th:href="@{/user/details(id=${user.id},name=${user.name})}" th:text="${user.name}"></a>
<a href="view.html" th:href="@{/user/{userId}" th:text="${user.name}"></a>
5.themeleaf的内置对象
5.1 #ctx :表示模板引擎上下文对象
5.2 #vars 模板引擎上下文对象
5.3 #locale 在全局上下文中维护的java.util.Locale对象
5.4 #request 表示HttpServletRequest对象
<span th:text="${#request.getAttribute('name')}"></span> <span th:text="${#session.getAttribute('name2')}"></span> <span th:text="${#servletContext.getAttribute('name3')}"></span>
5.5 #response 表示HttpServletResponse对象
5.6 #session 表示HttpSession对象
5.7 #servletContext 表示ServletContext对象
6.Themeleaf的内置变量
1.session #session属性
2.param #访问请求参数
3.application
<span th:text="${session.sesData}"></span> <span th:text="${param.userName"></span> <span th:text="${reqData}"></span> //request所有属性,都可以直接使用${myAttribute}来访问
7.数字对象
1.整数格式化
formatInteger(num,digits):第一个参数是处理的整数,第二个参数用于设置最少的整数位数。
arrayFormatInteger(num,digits)
listFormatInteger(number,digits)
setFormatInteger(numbers,digits)
8.字符串对象
在模板中使用#strings表示org.thmeleaf.expression.String对象。
<div th:text="#strings.toString(user)"></div> <div th:text="#strings.length(user)"></div>
非空判断与默认值处理
#strings提供了isEmpty与defaultString方法,用来字符串的非空判断与默认值处理
包含判断
<div th:text="${#strings.inexOf('abcde','z')}"></div>
<div th:text="${#string.substring('abcde',1,3)}"></div>
<div th:text="${#string.substringAfter('abcde','a')}"></div>
<div th:text="${#string.substringBefore('abcde','c')}"></div>
<div th:text="${#string.replace('abcde','c','1')}"></div>
9.日期对象
使用#datas或者#calendars这两个日期对象来处理日期
format(Date date)
formatISO(Date date)
formatISO(Date date,String pattern)
<div th:text="${#datas.format(date)}"></div> <div th:text="${#datas.formatISO(date)}"></div> <div th:text="${#datas.format(date,'yyyy-MM-dd HH:mm:ss)}"></div>