thymeleaf的基本语法

Thymeleaf的基本语法

Thymeleaf 主要通过在 HTML 标签上添加以th:开头的属性来实现模板功能,以下是其基本语法:

1. 变量表达式

用 ${} 来获取后端传递到模板的数据,例如:

html
<p th:text="${message}">默认消息</p>

上述代码中,${message} 表示获取名为 message 的变量值,并通过 th:text 属性将其显示在 <p> 标签内。若 message 未赋值,则显示 “默认消息” 。此外,还有 th:utext 用于输出非转义的 HTML 内容,比如:

html
<div th:utext="${htmlContent}">html 内容</div>
2. 条件判断指令

th:if:根据表达式结果决定元素是否渲染,当表达式为 true 时,元素会显示在最终生成的页面中;为 false 时,元素不会被渲染。例如:

html
<div th:if="${user.age >= 18}">成年人</div>

只有当 user.age 大于等于 18 时,这个 <div> 标签及其内容才会显示。
th:unless:th:if 相反,当表达式为 false 时,元素渲染显示;表达式为 true 时,元素不渲染。示例如下:

html
<div th:unless="${user.age >= 18}">未成年</div>

当 user.age 小于 18 时,该 <div> 标签及其内容会显示。

3. 循环遍历指令

使用 th:each 指令来遍历数组、集合等。语法格式为 th:each=“循环变量 : ${集合变量}” 。例如:

html
<ul>
    <li th:each="user : ${userList}" th:text="${user.name}">用户名</li>
</ul>

上述代码会遍历 userList 集合,为集合中的每个 user 对象生成一个 <li> 标签,并将 user.name 的值显示在 <li> 标签内。

4. URL 表达式

使用 @{} 来引入 URL,可用于引入静态资源或定义链接。
引入静态资源:比如引入 CSS 样式表或 JavaScript 文件,示例如下:

html
<link rel="stylesheet" th:href="@{/css/main.css}">
<script th:src="@{/js/app.js}"></script>

定义链接:可以指定绝对路径或相对路径,还能方便地处理 URL 参数。例如:

html
<a th:href="@{/user/detail}">用户详情</a>
<a th:href="@{/order/details(orderId=${order.id})}">订单详情</a>

第一个链接是相对当前项目根路径的链接;第二个链接将 order.id 作为参数嵌入到 URL 中,并且会自动进行 URL 参数编码操作 。如果有多个参数,用逗号分隔,如 @{/order/process(execId=${execId}, execType='fast')} 。

5. 选择(星号)表达式

类似于变量表达式,但使用一个预先选择的对象来代替上下文变量容器(map)执行。一般跟在 th:object 后使用,直接选择 object 中的属性。例如:

html
<div th:object="${book}">
    <span th:text="*{title}">默认标题</span>
</div>

这里 *{title} 等同于 th:text="${book.title}" ,前提是通过 th:object 指定了 book 对象 。

6. 文字国际化表达式

用 #{} 从外部 .properties 文件获取区域文字信息,使用 Key 索引 Value,还可提供一组可选参数 。比如:

html
<table>
    <th th:text="#{header.address.city}">城市</th>
    <th th:text="#{header.address.country}">国家</th>
</table>

在对应的国际化属性文件中,定义如 header.address.city=城市名称 、header.address.country=国家名称 ,就可以根据不同的语言环境显示相应文字。

7. 内置对象操作语法

Thymeleaf 提供了许多内置实用对象,用于方便地处理常见数据操作:
#dates:用于日期格式化等操作。例如:

html
<span th:text="${#dates.format(dateObj, 'yyyy-MM-dd')}"></span>

可将 dateObj 按 yyyy-MM-dd 格式进行格式化输出。
#strings:用于字符串处理,如判断是否以某个字符串开头、包含等操作。示例如下:

html
<span th:text="${#strings.startswith(someString, 'prefix')}"></span>

判断 someString 是否以 prefix 开头,并输出 true 或 false 。

  • #numbers:用于数字格式化等。
  • #bools:用于处理布尔类型数据 。
  • #arrays:用于数组相关操作 。
  • #sets:用于处理集合(Set) 。
  • #maps:用于处理 Map 类型数据 。
  • #aggregates:用于对数组或集合进行聚合操作 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值