Thymeleaf是一种Java服务器端模板引擎,用于HTML和XML文档的渲染。它的目标是为了允许开发人员能够创建可维护和易于设计的模板,同时也能够支持自然的模板开发过程。
Thymeleaf的一些主要特点和用法介绍:
自然模板语法:
Thymeleaf的模板语法非常接近于HTML,使得模板文件易于阅读和理解。
可以在浏览器中正确显示:
即使不渲染的情况下,使用Thymeleaf模板的HTML文件也可以在浏览器中正确显示。这是因为Thymeleaf使用标准的HTML标签和属性,不会影响到文件的可读性。
多种用途:
Thymeleaf可以用于生成静态HTML文件、动态网页、邮件模板等。
强大的表达式语言:
Thymeleaf的表达式语言(Thymeleaf Expression Language,简称Thymeleaf EL)可以在模板中嵌入动态数据,并且支持各种逻辑和运算符。
支持国际化:
Thymeleaf可以很容易地处理多语言网页的本地化和国际化。
容易集成:
Thymeleaf可以与Spring框架等其他Java组件轻松集成,使得开发过程更加简单和高效。
Thymeleaf是一个功能强大、易于使用和集成的模板引擎,适用于各种Java服务器端应用程序。它的自然模板语法和强大的表达式语言使得开发人员可以轻松地创建动态网页和模板文件。
Thymeleaf的使用
假设你在控制器中向模型添加了一个名为 user
的用户对象:
@GetMapping("/user")
public String getUser(Model model) {
User user = new User("John", "Doe");
model.addAttribute("user", user);
return "user";
}
创建一个user.html文件添加到默认静态资源下就会自动访问
例如springboot中"src/main/resources/templates"路径下
在 Thymeleaf 模板中,你可以这样访问 user
对象:
基本用法:
<p th:text="${user.name}">User Name</p>
<p th:text="${user.lastName}">User Last Name</p>
条件语句:
使用 th:if
或 th:unless
进行条件渲染:
<div th:if="${user.isAdmin}">
User is an admin.
</div>
<div th:unless="${user.isAdmin}">
User is not an admin.
</div>
循环:
如果你有一个列表或数组,你可以使用 th:each
进行迭代:
<ul>
<li th:each="item : ${items}" th:text="${item.name}">Item Name</li>
</ul>
URL 表达式:
使用 @{...}
语法创建 URL:
<a th:href="@{/user/profile}">Go to Profile</a>
调用 Java 方法:
虽然不常见,但你也可以在 Thymeleaf 中调用 Java 方法(但请注意,这可能会导致性能问题,因为它需要在服务器端进行评估):
<p th:text="${#strings.toUpperCase(user.name)}">User Name</p>
安全表达式:
如果你在使用 Spring Security,Thymeleaf 提供了安全表达式,允许你根据用户的权限动态地渲染内容。例如:
<div th:if="${#authorization.expression('isAuthenticated()')}">
User is authenticated.
</div>
JavaScript 集成:
虽然 Thymeleaf 主要用于服务器端渲染,但它也提供了与 JavaScript 集成的方法,例如使用 th:inline="javascript"
将 Thymeleaf 表达式直接嵌入到 JavaScript 代码中。但请注意,这可能会增加客户端的复杂性。
总之,Thymeleaf 的意义在于它为开发人员提供了一种方便、强大的模板引擎,简化了网页开发的过程,提高了开发效率。