Thymeleaf 语法
一、基础准备引入 Thymeleaf在 HTML 页面的html标签中添加命名空间让 IDE 识别 Thymeleaf 语法并提供提示html langzh-CN xmlns:thhttp://www.thymeleaf.org核心依赖Maven若使用 Spring Boot只需引入 starter 依赖即可xmldependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-thymeleaf/artifactId /dependency二、核心语法分类1. 变量表达式${}作用获取后端传递到页面的变量值是最常用的语法。语法th:text${变量名}示例后端ControllerGetMapping(/user) public String getUser(Model model) { User user new User(张三, 20); model.addAttribute(user, user); model.addAttribute(msg, 欢迎使用Thymeleaf); return user; }前端页面html预览!-- 直接输出普通变量 -- div th:text${msg}默认显示内容/div !-- 输出对象属性支持点语法/方括号语法 -- div th:text${user.name}默认姓名/div div th:text${user[age]}默认年龄/div说明th:text会替换标签内的文本内容若变量为 null标签内默认内容会显示开发时可用于占位。2. 选择变量表达式*{}作用基于已选择的对象th:object简化属性访问避免重复写对象名。语法先通过th:object指定对象再用*{}访问属性。示例div th:object${user} p th:text*{name}姓名/p p th:text*{age}年龄/p /div等价写法*{name}等价于${user.name}适合对象属性较多的场景。3. 消息表达式#{}作用读取国际化配置文件.properties中的文本实现多语言。语法th:text#{配置项key}示例国际化文件messages_zh_CN.propertiespropertieswelcome欢迎访问 user.name用户名页面使用div th:text#{welcome}默认欢迎语/div label th:text#{user.name}姓名/label4. 链接表达式{/}作用生成绝对路径 / 相对路径自动拼接上下文路径避免硬编码。语法无参数th:href{/路径}带参数th:href{/路径(参数1值1,参数2值2)}示例!-- 普通链接 -- a th:href{/home}首页/a !-- 带参数链接 -- a th:href{/user/detail(id1,typenormal)}用户详情/a !-- 静态资源CSS/JS -- link th:href{/css/style.css} relstylesheet script th:src{/js/index.js}/script5. 片段表达式~{}作用复用页面片段如页眉、页脚、侧边栏减少代码冗余。核心标签th:fragment定义片段th:insert/th:replace/th:include引入片段三者区别见下表标签作用特点th:insert插入片段到当前标签内保留当前标签片段作为子元素th:replace用片段替换当前标签不保留当前标签直接替换th:include插入片段的内容到当前标签仅保留片段文本已过时示例定义片段fragments/header.htmldiv th:fragmentheader h1网站头部/h1 nav导航栏/nav /div引入片段!-- 插入片段保留当前div标签 -- div th:insert~{fragments/header :: header}/div !-- 替换片段当前div被片段替换 -- div th:replace~{fragments/header :: header}/div !-- 简写省略~{} -- div th:replacefragments/header :: header/div三、常用属性1. 文本操作属性作用示例th:text替换标签内文本转义 HTMLp th:text${msg}默认值/pth:utext替换标签内文本不转义 HTMLp th:utext${htmlMsg}默认值/p2. 条件判断th:if条件为 true 时显示标签th:unless条件为 false 时显示标签与 th:if 相反th:switch/th:case多分支判断类似 Java 的 switch示例html预览!-- 简单条件 -- div th:if${user.age 18}成年/div div th:unless${user.age 18}未成年/div !-- 多分支 -- div th:switch${user.type} p th:case1普通用户/p p th:case2VIP用户/p p th:case*未知用户/p !-- 默认分支 -- /div3. 循环遍历th:each遍历集合List/Map/ 数组语法th:each元素, 状态变量 : ${集合}状态变量常用属性index索引从 0 开始count计数从 1 开始size集合大小even/odd是否偶数 / 奇数行first/last是否第一个 / 最后一个元素示例!-- 遍历List -- ul li th:eachu, stat : ${userList} th:text${u.name} - stat.count th:class${stat.odd} ? odd-row : even-row 默认内容 /li /ul !-- 遍历Map -- div th:eachentry : ${map} 键span th:text${entry.key}/span 值span th:text${entry.value}/span /div4. 动态属性th:attr设置任意 HTML 属性简写属性更常用th:id/th:class/th:src/th:href/th:value等示例!-- 动态设置id和class -- div th:iduser- ${user.id} th:class${user.status} ? active : disable/div !-- 动态设置输入框值 -- input typetext th:value${user.name} !-- 动态设置checked -- input typecheckbox th:checked${user.agree}5. 内联表达式作用在 HTML 文本 / JS 中直接使用 Thymeleaf 表达式无需标签属性。语法文本内联[[${变量}]]转义 HTML、[(${变量})]不转义 HTMLJS 内联在script标签中加th:inlinejavascript然后用/*[[${变量}]]*/示例!-- 文本内联 -- pHello, [[${user.name}]]!/p !-- JS内联 -- script th:inlinejavascript var userName /*[[${user.name}]]*/ 默认值; var userAge /*[[${user.age}]]*/ 0; console.log(userName, userAge); /script四、常用工具类Thymeleaf 提供内置工具类可通过#工具类名调用方法常用如下工具类作用示例#strings字符串操作${#strings.isEmpty(msg)}、${#strings.toUpperCase(name)}#numbers数字格式化${#numbers.formatDecimal(price, 0, 2)}保留 2 位小数#dates日期格式化${#dates.format(createTime, yyyy-MM-dd HH:mm:ss)}#lists集合操作${#lists.isEmpty(userList)}、${#lists.size(userList)}#objects对象判断${#objects.nullSafe(user.age, 0)}null 时返回默认值 0示例!-- 字符串非空判断 -- div th:if${#strings.isNotEmpty(msg)} 消息span th:text${msg}/span /div !-- 日期格式化 -- div th:text${#dates.format(user.createTime, yyyy-MM-dd)}/div !-- 数字保留2位小数 -- div th:text${#numbers.formatDecimal(user.balance, 0, 2)}/div总结核心表达式${}变量、*{}选择变量、#{}国际化、{}链接、~{}片段是 Thymeleaf 最基础也是最核心的语法需熟练掌握。常用功能条件判断th:if/th:switch、循环遍历th:each、动态属性th:class/th:value是页面开发中高频使用的功能结合工具类可提升开发效率。代码复用通过th:fragmentth:insert/replace实现页面片段复用是减少冗余代码的关键技巧。

相关新闻

如何3步永久保存网页视频?超实用工具全攻略

如何3步永久保存网页视频?超实用工具全攻略

如何3步永久保存网页视频?超实用工具全攻略 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾遇到过想要保存网页中的精彩视…

2026/7/3 18:15:19 阅读更多 →
douyin-downloader:视频下载工具的多场景技术解析方案

douyin-downloader:视频下载工具的多场景技术解析方案

douyin-downloader:视频下载工具的多场景技术解析方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 视频下载工具在内容创作与数字资产管理领域扮演着关键角色。本文将深入解析douyin-download…

2026/7/3 18:15:20 阅读更多 →
告别存档丢失:EldenRingSaveCopier高效迁移解决方案

告别存档丢失:EldenRingSaveCopier高效迁移解决方案

告别存档丢失:EldenRingSaveCopier高效迁移解决方案 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 为何需要专业存档迁移工具? 当你更换电脑或重装系统时,手动复制《Elde…

2026/7/3 13:28:54 阅读更多 →

最新新闻

Magpie窗口超分辨率工具:3步实现游戏画面高清重制

Magpie窗口超分辨率工具:3步实现游戏画面高清重制

Magpie窗口超分辨率工具:3步实现游戏画面高清重制 【免费下载链接】Magpie A general-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie 还在为老旧游戏在4K显示器上模糊不堪而烦恼吗?Windows平…

2026/7/3 20:41:21 阅读更多 →
如何免费永久使用IDM:开源激活脚本的完整解决方案

如何免费永久使用IDM:开源激活脚本的完整解决方案

如何免费永久使用IDM:开源激活脚本的完整解决方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 你是否厌倦了Internet Download Manager&#xff0…

2026/7/3 20:39:20 阅读更多 →
深度解析N_m3u8DL-RE:跨平台流媒体下载器的3种核心架构实现原理

深度解析N_m3u8DL-RE:跨平台流媒体下载器的3种核心架构实现原理

深度解析N_m3u8DL-RE:跨平台流媒体下载器的3种核心架构实现原理 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u…

2026/7/3 20:37:20 阅读更多 →
如何实现自然语言到SQL的智能转换:Vanna AI企业级解决方案深度解析

如何实现自然语言到SQL的智能转换:Vanna AI企业级解决方案深度解析

如何实现自然语言到SQL的智能转换:Vanna AI企业级解决方案深度解析 【免费下载链接】vanna 🤖 Chat with your SQL database 📊. Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval 🔄. 项目地址: https://git…

2026/7/3 20:37:20 阅读更多 →
MuleSoft企业级AI编排:LLM集成的契约化实践

MuleSoft企业级AI编排:LLM集成的契约化实践

1. 项目概述:当企业级集成平台遇上大语言模型“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题不是一句空泛的宣传口号,而是我在过去18个月里亲手落地的三个核心生产系统的真实写照。它讲的不是“用…

2026/7/3 20:37:20 阅读更多 →
洛雪音乐音源配置终极指南:一站式解锁全网无损音乐体验

洛雪音乐音源配置终极指南:一站式解锁全网无损音乐体验

洛雪音乐音源配置终极指南:一站式解锁全网无损音乐体验 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 还在为音乐版权分散而烦恼吗?洛雪音乐音源项目为你提供了完美的解决…

2026/7/3 20:35:19 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻