基础
1.模板引擎
thymeleaf是java的模板引擎,把界面公用的部分进行提取,能够处理html,xml,js,css
其他常见模板引擎jsp,freemarker
- 是自然模板,原型即界面
- 语法优雅易懂
- 支持OGNL,SpringEL
Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用。
2.标准方言
<!--引入命名空间-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head></head>
<body>
<!--第一种常用-->
<span th:text="...">
<span data-th-text="...">
</body>
<html>
3.表达式语法
-
简单表达式
- 变量表达式(后台设置): ${…} 选择表达式: *{…}
- 比如*{name} 从可用值中查找name,如果有上下文,比如上层是object,则查object中的name属性。
<span th:text="${book.author.name}">
<!--book取的是上下文的变量-->
<div th:object="${book}">
<!--取出book对象的tittle属性-->
<span th:text="*{title}"></span>
</div>
-
消息表达式: #{…}
- 国际化时使用,也可以使用内置的对象,比如date格式化数据
根据key找值
<span th:text="#{header.city}">
-
链接表达式: @{…}
- 用来配合link src href使用的语法
- 可以是相对的,可以使绝对的
<a th:href="@{../ ~/ http://sdaf}" href="默认href">...</a>
-
片段表达式: ~{…}
- 用来引入公共部分代码片段,并进行传值操作使用的语法。
文字
- 文本: ‘one text’,’another text’,…
- 数字: 1,2,1.2,…
- 布尔: true,false
- 空值:null
- 单词: something,main,name,…
-
运算符
- 比较:> , < , >= , <= ( gt , lt , ge , le )
- 等于:== , != ( eq , ne )
-
条件
th:text="${user.name} ? "暗暗" : _"
- 无操作 _
4.使用实例
list到前台table遍历
前端存放list
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> m = new HashMap<String, Object>();
m.put("name", "name1");
m.put("age", "1");
list.add(m);
m = new HashMap<String, Object>();
m.put("name", "name2");
m.put("age", "2");
list.add(m);
model.addAttribute("list", list);
前端显示
<table border="1">
<tr th:each="m : ${list}"><!-- 其中m是个临时变量,像for(User u : userList)那样中的u-->
<td th:text="${m.name}"/>
<td th:text="${m.age}"/>
</tr>
</table>