文章目录
- 引言
- Thymeleaf标签
- 显示标签
- 链接地址标签
- 条件判断标签
- 元素遍历标签
- Thymeleaf表达式
- 变量表达式
- 选择变量表达式
- 消息表达式
- 链接表达式
- Thymeleaf内置对象
- 上下文对象
- 上下文变量
- 上下文区域
- 请求对象
- 响应对象
- 会话对象
- 日期对象
- 实战演练
- 创建控制器
- 创建模板页面
- 结语
引言
Thymeleaf是一个功能强大的Java模板引擎,它提供了丰富的语法和表达式,使得开发者能够轻松地构建动态Web页面。在本讲稿中,我们将深入探讨Thymeleaf的标签、表达式和内置对象,以便更好地理解和使用这一工具。
Thymeleaf标签
显示标签
- th:text:用于指定标签显示的文本内容。例如,
<p th:text="${message}">你好,世界!</p>
将显示变量message
的值。 - th:utext:与
th:text
类似,但不对特殊字符进行转义,适用于需要显示HTML内容的场景。
链接地址标签
- th:href:针对
<a>
标签的href
属性和<link>
标签的href
属性,用于指定链接地址。 - th:src:针对
<img>
标签的src
属性和<script>
标签的src
属性,用于指定资源的链接地址。
条件判断标签
- th:if:用于条件判断,如果条件为真,则渲染该标签内的HTML内容。
- th:unless:与
th:if
相反,如果条件为假,则渲染该标签内的HTML内容。 - th:switch、th:case:用于多分支条件判断,类似于Java中的
switch
语句。
元素遍历标签
- th:each:用于遍历集合的元素,类似于Java中的
for
循环。
Thymeleaf表达式
变量表达式
${...}
:用于获取上下文中的变量值。例如,在案例3.2中的${currentDate}
用于获取当前日期。
选择变量表达式
*{...}
:用于从被选定对象获取属性值,通常与th:object
属性一起使用。
消息表达式
#{...}
:用于Thymeleaf模板页面国际化内容的动态替换和展示。
链接表达式
@{...}
:用于页面跳转或资源的引入,类似于构建URL。
Thymeleaf内置对象
上下文对象
#ctx
:代表当前的Thymeleaf上下文对象。
上下文变量
#vars
:提供对当前模板上下文中所有变量的访问。
上下文区域
#locale
:提供对当前区域设置的访问。
请求对象
#request
:提供对当前HTTP请求对象的访问。
响应对象
#response
:提供对当前HTTP响应对象的访问。
会话对象
#session
:提供对当前HTTP会话对象的访问。
日期对象
#dates
、#calendars
:提供日期和日历操作功能,例如格式化日期。
实战演练
让我们通过一个简单的例子来演示Thymeleaf语法的实际应用。
创建控制器
首先,创建一个控制器,用于处理请求并添加模型属性:
@Controller
public class ExampleController {@RequestMapping("/example")public String example(Model model) {model.addAttribute("user", new User("张晓峰", 30));return "example";}
}
创建模板页面
然后,创建一个Thymeleaf模板页面example.html
:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Thymeleaf示例</title>
</head>
<body><p th:text="${user.name} + '的年龄是 ' + ${user.age}">默认文本</p><p th:if="${user.age > 18}">用户是成年人</p><p th:unless="${user.age > 18}">用户是未成年人</p><div th:each="item : ${user.items}"><p th:text="${item}">默认文本</p></div>
</body>
</html>
在这个例子中,我们使用了th:text
来显示用户的姓名和年龄,th:if
和th:unless
来进行条件判断,以及th:each
来遍历用户的项目列表。
结语
通过本讲稿,我们详细了解了Thymeleaf的标签、表达式和内置对象。这些知识将帮助你在实际开发中更加灵活和高效地使用Thymeleaf来构建动态Web页面。记得在实际应用中,根据项目需求选择合适的语法和表达式。