Thymeleaf---基础知识

Posted Panda_cv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thymeleaf---基础知识相关的知识,希望对你有一定的参考价值。

1. Thymeleaf 菜鸟教程

https://www.cnblogs.com/jiangbei/p/8462294.html

2. Thymeleaf

2.1 Thymeleaf简介

Thymeleaf是⼀种类似于JSP的动态⽹⻚技术。

JSP 必须依赖Tomcat运⾏,不能直接运⾏在浏览器中。
HTML可以直接运⾏在浏览器中,但是不能接收控制器传递的数据。
Thymeleaf是⼀种既保留了HTML的后缀能够直接在浏览器运⾏的能⼒、
⼜实现了JSP显示动态数据的功能——静能查看⻚⾯效果、动则可以显示数据。

2.2 Thymeleaf的使用

SpringBoot应⽤对Thymeleaf提供了良好的⽀持

1 添加thymeleaf的starter

	<dependency>
		 <groupId>org.springframework.boot</groupId>
		 <artifactId>spring-boot-starter-thymeleaf</artifactId>
	</dependency>
	
2 创建Thymeleaf模板	
	Thymeleaf模板就是HTML⽂件.
	SpringBoot应⽤中 resources\\templates ⽬录就是⽤来存放⻚⾯模板的.

重点说明:
    1. static ⽬录下的资源被定义静态资源,SpringBoot应⽤默认放⾏;
       如果将HTML⻚⾯创建static⽬录是可以直接访问
    2. templates ⽬录下的⽂件会被定义为动态⽹⻚模板,SpringBoot应⽤会拦截
       templates中定义的资源;如果将HTML⽂件定义在templates⽬录,
       则必须通过控制器跳转访问。
       
	补充:在templates创建HTML⻚⾯模板
	创建PageController,⽤于转发允许"直接访问"的⻚⾯请求
			@Controller
			@RequestMapping("/page")
			public class PageController {
				 @RequestMapping("/test.html")
 			     public String test(){
                     return "test";
                 }
            }

2.3 Thymeleaf基本语法

如果要在thymeleaf模板中获取从控制传递的数据,需要使⽤th标签

2.3.1 在thymeleaf模板页面引⼊th标签的命名空间

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
 	<head>
 		<meta charset="UTF-8">
 		<title>Title</title>
    </head>
    <body>
    
    </body>
</html>

2.3.2 th:text

在⼏乎所有的HTML双标签都可以使⽤ th:text属性,将接收到的数据显示在标签的内容中
	<label th:text="${price}"></label>
	<div th:text="${str}"></div>
	<p th:text="${book.bookName}"></p>

2.3.3 th:inline 内联

1. HTML内联
	<p th:inline="text">图书名称:[[${book.bookName}]]</p>
	
2. CSS内联
   <style type="text/css" th:inline="css">
 		.style1{
 			color:[[${color}]]
		 }
   </style>
   
3. javascript内联
 <script type="css/javascript" th:inline="javascript">
 
 </script>

2.3.4 th:object 和 *

<div th:object="${book}">
 	<p th:text="*{bookId}"></p>
 	<p th:text="*{bookName}"></p>
 	<p th:text="*{bookAuthor}"></p>
</div>

2.4 流程控制

2.4.1 th:each 循环

<table style="width: 600px" border="1" cellspacing="0">
 	<caption>图书信息列表</caption>
 	<thead>
		 <tr>
			 <th>图书ID</th>
			 <th>图书名称</th>
			 <th>作者</th>
 		 </tr>
 	</thead>
 	<tbody>
 		<tr th:each="b:${books}">
			 <td th:text="${b.bookId}"></td>
 			 <td th:text="${b.bookName}"></td>
			 <td th:text="${b.bookAuthor}"></td>
		</tr>
	 </tbody>
</table>

2.4.2 分支

th:if 如果条件不成⽴,则不显示此标签

<td th:if="${b.bookPrice}>40" style="color:red">太贵!!!</td>
<td th:unless="${b.bookPrice}>40" style="color:red">太贵!!!</td>
<td th:if="${b.bookPrice}<=40" style="color:green">推荐购买</td>

2.5 碎片使用

2.5.1 碎片的概念

碎⽚,就是HTML⽚段,我们可以将多个⻚⾯中使⽤的相同的HTML标签部分单独定义,
然后通过th:include可以在HTML⽹⻚中引⼊定义的碎⽚

2.5.2 碎片使用案例

1. 定义碎⽚ th:fragment
	header.html

	<!DOCTYPE html>
	<html lang="en" xmlns:th="http://www.thymeleaf.org">
	<head>
		 <meta charset="UTF-8">
 		 <title>Title</title>
	</head>
	<body>
	<div th:fragment="fragment1" style="width: 100%; height: 80px;background: deepskyblue;
color:white; font-size: 25px; font-family:⽂鼎霹雳体">
 				千锋武汉Java2010班,六六六!!!
	</div>
	</body>
	</html>	
2. 引⽤碎⽚ th:include 和 th:replace
		a.html
		
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
	 <meta charset="UTF-8">
 	<title>Title</title>
</head>
<body>
<!-- <div th:include="header::fragment1"></div>-->
	 <div th:replace="header::fragment1"></div>
	 <div style="width: 100%; height: 500px">
 			定义内容
 	</div>
<!-- <div th:include="footer::fragment2"></div>-->
	 <div th:replace="footer::fragment2"></div>
</body>
</html>

以上是关于Thymeleaf---基础知识的主要内容,如果未能解决你的问题,请参考以下文章

Java基础总结之Thymeleaf详解

Thymeleaf,片段和默认参数

Thymeleaf引用片段传入参数

Spring MVC 3.2 Thymeleaf Ajax 片段

thymeleaf引入公共页面的某个片段

11SpringBoot-CRUD-thymeleaf公共页面元素抽取