Thymeleaf是一个Java模板引擎,用于处理HTML、XML、JavaScript、CSS等文件。它可以与Spring框架无缝集成,为Web应用程序提供优雅的模板解决方案。本文将介绍Thymeleaf的常用语法,包括th属性、表达式、内置对象、内置方法等。
Thymeleaf提供了一系列以th:
开头的属性,用于在HTML标签中添加动态内容。例如:
DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="${title}">默认标题title>
head>
<body>
<h1 th:text="${message}">默认消息h1>
body>
html>
在这个例子中,th:text
属性用于设置
和标签的文本内容。当Thymeleaf解析这个模板时,它会用
${title}
和${message}
表达式的值替换默认的文本。
Thymeleaf支持多种表达式,用于在模板中处理数据。下面介绍几种常用的表达式。
变量表达式用于访问模板上下文中的变量。语法为${...}
,例如:
<p th:text="${user.name}">默认用户名p>
链接表达式用于生成URL。语法为@{...}
,例如:
<a th:href="@{/login}">登录a>
消息表达式用于国际化支持,从资源文件中获取文本。语法为#{...}
,例如:
<p th:text="#{welcome.message}">默认欢迎消息p>
代码块表达式用于在模板中插入一段代码。语法为[[...]]
(文本)和[(...)]
(属性),例如:
<script th:inline="javascript">
/**/
var message = [[${message}]];
/*]]>*/
script>
选择变量表达式用于根据条件选择不同的值。语法为(...)?:(...)
,例如:
<p th:text="${user.name} ?: '匿名用户'">默认用户名p>
Thymeleaf提供了一些内置对象,用于在模板中处理常见任务。例如:
#ctx
:访问上下文对象。#vars
:访问上下文中的所有变量。#locale
:访问当前区域设置。#httpServletRequest
:访问HttpServletRequest对象。#httpSession
:访问HttpSession对象。Thymeleaf还提供了一些内置方法,用于处理字符串、日期、集合等。例如:
#strings
:字符串处理方法,如#strings.toUpperCase(str)
。#dates
:日期处理方法,如#dates.format(date, 'yyyy-MM-dd')
。#lists
:集合处理方法,如#lists.size(list)
。在Thymeleaf中,可以使用+
运算符进行字符串拼接。例如:
<p th:text="'Hello, ' + ${user.name} + '!'">默认问候p>
Thymeleaf支持常见的条件比较,如==
、!=
、<
、>
等。例如:
<div th:if="${user.age} > 18">成年用户div>
Thymeleaf支持switch
语句,用于多分支条件判断。例如:
<div th:switch="${user.role}">
<p th:case="'admin'">管理员p>
<p th:case="'user'">普通用户p>
<p th:case="*">未知角色p>
div>
Thymeleaf支持th:each
属性,用于遍历集合。例如:
<ul>
<li th:each="item : ${items}" th:text="${item.name}">默认列表项li>
ul>
在Thymeleaf中,我们可以使用加(+)、减(-)、乘(*)、除(/)和取余(%)等基本算术运算符来进行数值计算。这些运算符的使用方法与传统的编程语言类似,可以直接应用在表达式中,实现数值的加减乘除等操作。
例如:
<p th:text="${user.age} + 1">年龄加一p>
逻辑运算符主要用于处理布尔值之间的关系,包括与(&&)、或(||)和非(!)等操作。通过逻辑运算符,我们可以方便地实现条件判断和逻辑控制,从而使得模板的渲染更加灵活和智能。
例如:
<p th:text="${user.age} > 18 and ${user.gender} == 'male'">成年男性p>
Thymeleaf支持内联表达式,用于在文本和属性中直接插入表达式。这种表达式允许我们在文本内容和HTML属性中直接插入动态数据,从而实现页面内容的灵活定制。例如:
<p>你好,[[${user.name}]]!p>
Thymeleaf的内联表达式为开发者提供了一种简洁、高效的方式来处理各种场景,例如文本替换、条件渲染等。
通过以上介绍,相信你已经对Thymeleaf的常用语法有了一定的了解。在实际项目中,你可以根据需要灵活运用这些语法,编写出优雅、高效的模板。