Thymeleaf (详细)
一、Thymeleaf介绍
Thymeleaf 是一个模版引擎。所谓的模版引擎,就是模版+数据。
1.快速开始
新增的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
创建页面到templates文件夹下
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
欢迎你,<span th:text="${name}">贵宾</span>!
</body>
</html>
设计接口返回这个页面
@Controller
public class MyController {
@RequestMapping("/show")
public String show(Model model){
model.addAttribute("name","xiaoming");
return "hello";
}
}
模版引擎的作用:
- 让我们写渲染页面的时候更加的方便,直接写html即可。
- 模版没有数据,可以直接展示模版中的默认内容,当有数据时展示数据。——页面不一定必须跑在服务器内,简化前端页面的设计步骤。
有数据时:
没有数据时:
2.字符串
th标签中要想做字符串连接,可以使用+号或者“||”
欢迎你,<span th:text="超级vip+${name}">贵宾</span>!
欢迎你,<span th:text="|超级vip${name}|">贵宾</span>!
3.if-else
<span th:if="${age > 18}">成年人,可以做很多事情</span>
<br/>
<span th:unless="${age > 18}">成年人,可以做很多事情</span>
4.三元运算
<span th:text="${age > 18?'爽!':'累'}">成年人,可以做很多事情</span>
5.循环
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>学生列表</title>
<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
<!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
</head>
<body>
<table class="table table-striped">
<tr>
<td>序号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
</tr>
<tr th:each="stu : ${stus}">
<td th:text="${stu.id}">序号</td>
<td th:text="${stu.name}">姓名</td>
<td th:text="${stu.age}">年龄</td>
<td th:text="${stu.gender}">性别</td>
</tr>
</table>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
</body>
</html>
后端数据:
@RequestMapping("/students")
public String students(Model model){
//1.创建List
List<Student> stus = new ArrayList<>();
stus.add(new Student(1001L,"小明",20,"男"));
stus.add(new Student(1002L,"小谢",21,"男"));
stus.add(new Student(1003L,"小王",22,"女"));
//2.传给前端页面
model.addAttribute("stus",stus);
return "students";
}
6.日期格式化
<input th:value="${#dates.format(now,'yyyy-MM-dd HH:mm:ss')}"/>