Thymeleaf 标准表达式语法详解

Thymeleaf模板引擎的语法 Thymeleaf模板引擎语法 一、表达式语法 变量表达式(${…}) 用于访问从后端传递到模板中的变量。 例如,在Java后端代码中,将一个名为user的对象添加到模型(Model)中: model.addAttribute("user", new User("John", "Doe")); 在Thymeleaf模板中,可以使用变量表达式来访问user对象的属性: <p th:text="${user.firstName}">Default First Name</p> 阅读详情

1. 表达式汇总

<html xmlns:th="http://www.thymeleaf.org">
属性描述示例
$ {…}变量表达式,可用于获取后台传过来的值< p th:text="${userName}">中国</ p>
* {…}选择变量表达式
#{…}消息表达式
@ {…}链接⽹址表达式,用于替换网页中的 src、href 等的值th:href="@{/css/home.css}"
〜{…}⽚段表达式,可以用于引用公共的目标片段< div th:insert="~{footer :: copy}"></ div>

$ {…} 变量表达式

变量表达式,用于访问容器上下文环境中的变量,功能同jstl中${}。

<p th:text="${name}"></p>
<!-- 不能这样使用-->
<P>${name}</P>

* {…} 选择表达式

选择表达式与变量表达式有一个重要的区别:选择表达式计算的是选定的对象,而不是整个环境变量映射。
也就是:只要是没有选择的对象,选择表达式与变量表达式的效果一样的。那什么是选择的对象呢?
是一个:th:object对象属性绑定的对象。

<!-- 绑定对象 -->
<div th:object="${person}">
	<!-- 选择绑定对象中的属性值 -->
    <p th:text="*{name}"></p>
    <p th:text="*{id}"></p>
</div>

@{…} 处理 url 地址

      Thymeleaf 的 @ {…} 表达式用于处理 web 应用中的 url 地址,可以是相对地址,也可以是绝对地址。

      @{/} 斜杠开头表示相对整个应用根目录,"/" 表示 “/应用上下文路径”

      假如页面当前浏览器地址为:http://localhost/thymeleaf/user/userHome, 其中 thymeleaf 表示应用上下文路径,user/userHome 为后台请求路径,则常用的写法如下:

<body>
<a th:href="@{userList}">1、@{userList}</a>
<a th:href="@{./userList}">2、@{./userList}</a>
<a th:href="@{../tiger/home}">3、@{../tiger/home}</a>
<a th:href="@{/tiger/home}">4、@{/tiger/home}</a>
<a th:href="@{https://www.baidu.com}">5、@{https://www.baidu.com}</a>
</body>

@{…} 携带参数

      th:href 是⼀个修饰符属性,将表达式结果设置为标签 href 属性的值,请求地址中携带参数传往服务器是很常见的操作,常用操作如下:

<body>
<a th:href="@{userList(id=9527)}">1、@{userList(id=9527)}</a>
<a th:href="@{userList(id=9527,name=华安)}">2、@{userList(id=9527,name=华安)}</a>
<a th:href="@{userList(id=9527,name=${userName})}">3、@{userList(id=9527,name=${userName})}</a>
</body>

在这里插入图片描述

  • 1)在 @{…}表达式末尾使用 “()” 设置参数;
  • 2)多个参数时,使用 “,” 隔开
  • 3)参数值可以使用表达式动态取值。

文本及其操作

⽂本⽂字指包含在单引号之间的字符串,它们可以包含任何字符,但如果字符串有空格时,必须使用单引号" ’ "包含。

<body>
<!--中间无空格时,可以不加单引号-->
<p th:text="China">中国</p>
<!--空格属于特殊字符,必须使用单引号包含整个字符串-->
<p class="css1 css2" th:class="'css1 css2'">样式</p>
<!--下面如果没用单引号 th:text="Big China",则页面直接报错-->
<p th:text="'Big China'">中国</p>
<!--后台使用:model.addAttribute("info", "Love you 中国"); 传值有空格也是没有问题的-->
<p th:text="${info}">info</p>
<!--后台传值字符串有空格是可以的,可以使用 + 进行字符串连接-->
<p th:text="'small smile'+',very good.'">浅浅的微笑</p>
</body>

字符串追加
⽆论是字符串⽂本常量,还是通过变量表达式或消息表达式计算的结果,都可以使⽤ “+” 运算符轻松地追加⽂本。

<span th:text="'The name of the user is ' + ${user.name}">

数字字⾯量

<body>
<!--直接用 80 替换-->
<p th:text="80">8</p>
<!--计算结果为 16 在进行替换-->
<p th:text="8+8">8 + 8</p>
<!--前面 8+8 计算结果为 16,然后字符串拼接上 Love,后面的 9+9也会被当做字符串拼接-->
<p th:text="8+8+' Love '+9+9">8 + 8+' Love '+9+9</p>
<!--前面 8+8 计算结果为 16,后面的 9+9因为有括号,所以也会计算结果,最后拼接 Love 字符串-->
<p th:text="8+8+' Love '+(9+9)">8 + 8+' Love '+(9+9)</p>
<!--后台传了一个:model.addAttribute("age", 35);取得结果后在进行计算-->
<p th:text="100-${age}"></p>
</body>

布尔字⾯量
布尔字⾯量包含 true 和 false

<body>
<!--直接用 true 替换了标签体内容-->
<p th:text="true">布尔</p>
<!--true、false 是布尔值,and 是布尔运行符,and(与),or(或),not(非)、!(非)-->
<p th:text="true and false">true and true</p>
 
<!--后台使用 model.addAttribute("isMarry", true); 传了值-->
<!--th:if 表达式为 true,则显示标签内容,否则不显示-->
<p th:if="${isMarry}">已结婚</p>
 
<!--后台传值:model.addAttribute("age", 35);-->
<!--比较运算符:&gt;,&lt;,&gt; =,&lt;=(gt,lt,ge,le)-->
<p th:if="${age}&gt;18">已成年</p>
<p th:if="${age}&lt;18">未成年</p>
</body>

NULL 字⾯量

<body>
<p th:text="null">show null</p>
<!--后台传了个值:model.addAttribute("id", null);-->
<!--当 id 的值为 null 时,整个标签不显示-->
<p th:text="${id}">id</p>
<!--相等运算符:==,!=(eq,ne)-->
<p th:if="${id} eq null">id 值为 null</p>
 
<!--后台传了个值:model.addAttribute("name", "");-->
<!--当 name 为空时,整个标签不再显示-->
<p th:text="${name}">为空</p>
<!--判断结果为 true-->
<p th:if="${name} == ''">name 为空</p>
</body>

算术运算符
Thyme Leaf 标准表达式⽀持算术运算:+, - ,*,/(除),%(取余)

<body>
<canvas style="background-color: #999999" th:width="100" th:height="${age} + 15">
    您的浏览器不支持 Canvas
</canvas>
<p th:text="15 * 4">值为 60 </p>
<p th:text="15 * 4-100/10">值为 50 </p>
<p th:text="100 % 8">值为 4</p>
</body>

⽐较/逻辑运算符

表达式中的值可以与 >,<,>= ,<= ,== ,!= 符号进⾏⽐较。 ⼀个更简单的替代⽅案是使⽤这些运算符的⽂本别名:gt(>),lt(<),ge(>=),le(<=),eq(==),neq(!=)。
逻辑运算符:and(与)、or(或)、!(非),not(非)

<body>
<p th:if="5>3">5 大于 3</p>
<p th:if="5 &gt;4">5 大于 4</p>
<p th:if="10>=8 and 7 !=8">10大于等于8,且 7 不等于 8 </p>
<p th:if="!false">!false</p>
<p th:if="not(false)">not(false)</p>
</body>

三元运算符
Thymeleaf 中的三元运算与 Java 以及 JavaScript 中基本一致,如 A>B?X:Y,在 X、Y 中可以继续嵌套,只是 Thymeleaf 中需要使用括号包含起来,否则报错。

<body>
<!--7大于5时,输出 7大,否则输出 5大-->
<p th:text="7&gt;5?'7大':'5大'">三元运算符</p>
<!--后台控制器输出了:model.addAttribute("age", 35);-->
<!--因为 ${xx}取值时,如果值为null,则默认整个标签不再显示-->
<p th:text="${age}!=null?${age}:'age等于 null'"></p>
<!--这里使用嵌套判断,嵌套的部分要使用括号-->
<p th:text="${age}!=null?(${age}>=18?'成年':'未成年'):'age等于 null'"></p>
<!--变量 age2 后台并没有输出,所以 age2 不存在,此时 age2 ==null-->
<p th:text="${age2}!=null?${age2}:'age2等于 null'"></p>
 
<!--后台输出了:model.addAttribute("isMarry", true);-->
<!--A>B?X:Y,这里的 Y 部分是省略的,此时如果 A>B 返回 false,则整个三元运算结果为 null-->
<p th:class="${isMarry}?'css2'">已婚</p>
<p th:text="!${isMarry}?'css2'">已婚</p>
</body>
【Spring Boot】Thymeleaf模板引擎 — Thymeleaf表达式 本节介绍Thymeleaf的各种表达式,通过一些简单的例子来演示Thymeleaf的表达式及用法。 阅读详情

相关推荐

Thymeleaf 语法全面详解:从入门到精通(史上最全)

Thymeleaf 是一个功能强大的服务器端 Java 模板引擎,支持多种文件类型,如 HTML、XML、JavaScript 和 CSS。其语法丰富,涵盖了变量表达式、选择表达式、消息表达式、链接表达式和片段表达式等多种表达式类型。Thymeleaf 还支持字面量、文本操作、算术运算、布尔运算和条件运算等基本操作。核心属性如 th:text、th:utext、th:value 和 th:with 用于设置文本内容、表单值和局部变量。条件属性如 th:if、th:unless 和 th:switch 用于条

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1732

关于thymeleaf模板引擎中th:if的使用

1)如果表达式结果为布尔值,则为 true 或者 false 2)如果表达式的值为 null,th:if 将判定此表达式为 false 3)如果值是数字,为 0 时,判断为 false;不为零时,判定为 true 4)如果 value 是 String,值为 “false”、“off”、“no” 时,判定为 false,否则判断为 true,字符串为空时,也判断为 true 5)如果值不是布尔值,数字,字符或字符串的其它对象,只要不为 null,则判断为 true

桐花思雨 4万+

Springboot+thymeleaf+IDEA——thymeleaf 的标准方言表达式,基本语法

文章目录Springboot+thymeleaf+IDEA——thymeleaf 的标准方言表达式1、什么是标准方言2、标准表达式语法3、与spring / springboot集成时的spring el 表达式4、选择表达式5、多语言模式下的消息表达式【i18n】6、链接表达式7、片段表达式8、文本和其它操作1、文字2、文本操作3、算术运算4、布尔运算5、比较和相等6、条件操作符9、表达式预处理...

简简单单Onlinezuozuo 4919

Thymeleaf之表达式

本篇博客主要来总结 Thymeleaf 模板引擎 中的常用表达式,并结合案例帮助大家快速掌握:变量表达式;消息表达式;选择表达式;链接表达式;分段表达式;内联表达式。

小异常的博客 1945

unity pc运行包导入glb

本文介绍了在Unity中实现GLB/GLTF模型动态导入的方法。主要使用glTFast插件进行模型导入,配合StandaloneFileBrowser实现文件选择功能。文章提供了详细的插件安装方式(包括国内镜像源),并给出了核心导入脚本代码。脚本实现了模型加载、父对象设置、材质修复等功能,解决了常见的材质显示异常问题。该方法支持编辑器和PC平台,兼容不同版本的glTFastAPI,通过简易UI操作即可完成模型导入,适合需要运行时加载3D模型的Unity项目开发。

懒懒的蓝的博客 545

STM32_DAC

DAC(Digital-to-Analog Converter,数模转换器)是将数字信号转换为模拟信号的外设,广泛应用于音频输出、波形生成、电机控制等场景。STM32F407 系列芯片配备了 2 个 DAC 通道(DAC1 和 DAC2),支持 12 位分辨率,支持多种触发方式,可输出稳定的模拟电压。本文从 DAC 的基本原理出发,详细讲解 STM32F407 DAC 的配置方法、代码实现、波形生成以及实际应用案例,帮助你快速掌握 DAC 的使用技巧。

轩宇的博客 1242

Thymeleaf 基础语法与标准表达式详解

本文介绍了Thymeleaf在Spring Boot项目中的基础用法,作为一个功能强大的HTML模板引擎,它支持变量替换、条件判断、循环遍历等核心功能。文章详细讲解了${...}、*{...}等标准表达式类型,并提供了完整的HTML与Java示例代码,包括国际化支持、URL生成、模板片段复用等实用技巧。通过th:text、th:if、th:each等常用标签,开发者可以轻松实现动态页面渲染。文中还总结了各类表达式的应用场景,并推荐了官方文档等进阶学习资源,帮助开发者快速掌握Thymeleaf的核心功能。

BUG糕手的博客 1124

如何下载era5数据?(两种方式)

供水利大数据云计算课程同学参考使用#

Camiel_sweet的博客 1万+

2)Thymeleaf 标准表达式语法详解

目录 表达式汇总 @{...} 处理 url 地址 @{...} 携带参数 文本及其操作 数字字⾯量 布尔字⾯量 NULL 字⾯量 算术运算符 ⽐较/逻辑运算符 三元运算符 表达式汇总 <html xmlns:th="http://www.thymeleaf.org"> 编号 属性 描述 示例 1 $ {...} 变量表达式...

蚩尤后裔-汪茂雄 5230

基于Unity引擎利用OpenCV和MediaPipe的面部表情和人体运动捕捉系统

增加了模型的绑定,利用Mediapipe这个强大的库可以实现识别面部表情的捕捉和人体结构运动的捕捉,基于以上的特性加入到Unity的人物模型中,实现实时的面部表情和人体运行的捕捉

BIgbossyii的博客 1万+

10.Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲

本文的结构还是首先教大家明确概念问题,然后深入理解概念并学会使用,最后在理论基础掌握的基础上,通过实例来强化大家的理解。本文依旧是**先理论后实践**的教学方式,欢迎留言或私聊提问。

关注我,更多技术问题欢迎私聊~ 1万+

Thymeleaf3语法详解

Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有Freemarker和Jsp。Jsp应该是我们最早接触的模版引擎。而Freemarker工作中也很常见(Freemarker教程)。今天我们从三个方面学习Thymeleaf的语法:有常见的TH属性,四种标准表达式用法,在SpringBoot中的应用。还在等什么,一起来学吧! 技术:Thymeleaf,SpringBo...

笃行999 900

输入文件(Example-1.inp)参数解读与获取方法

弹性参数:优先使用默认值(泊松比 0.25、杨氏模量 8×10⁵ bars),或参考区域地质 / 地球物理研究。断层参数:从地震矩反演、GPS 位移反演、地质图 / 震源机制获取(核心参数,需确保准确性)。网格 / 图形参数:根据研究区范围和输出需求调整(步长 / 放大系数等)。

2301_79258000的博客 81

thymeleaf3.0学习

一、th属性 1、th:text:设置当前元素的文本内容,类似修改制定属性的还有th:utext,区别在于后者不会转义html标签 2、th:value:设置当前元素的value值,类似的还有th:src、th:href 3、th:each:循环遍历元素;th:each="item : ${collection}",然后使用th:text="${item}"赋值表达式给标签赋值。 4、t...

weixin_30321449的博客 176

Unitree G1仿人机器人协同搬箱:从仿真搭建到多机协同部署完整指南

Unitree G1仿人机器人协同搬箱技术方案摘要 本文提供了一套完整的Unitree G1人形机器人协同搬箱解决方案,涵盖从仿真环境搭建到多机协同部署的全流程。核心内容包括: 双仿真环境配置:同时搭建Gazebo+ROS Noetic基础仿真环境与Isaac Gym+Mujoco高性能RL训练环境,支持Sim2Sim迁移验证 训练框架搭建:详细配置unitree_rl_gym框架,提供PPO算法定制化训练流程和参数优化方案 数据集应用:整合宇树开源真机数据集(UnifoLM-WBT-Dataset)~~~

huanghm88的专栏 472

深入解析Linux驱动开发中的I2C时序及I2C高频面试题

在 I2C 通信中,主设备和从设备的角色有着明确的定义。主设备是发起通信的设备,它负责控制整个通信过程。主设备可以是微控制器、处理器等具有控制能力的设备。

大模型大数据攻城狮的专栏 2766

spring boot(四):thymeleaf使用详解

在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用。thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎。   thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JS...

聆听。。花开雨落的博客 276

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

springboot(四):thymeleaf使用详解

在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用。thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎。 thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。...

huangshulang1234的博客 417

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SpringBoot整合Thymeleaf

本文将从依赖引入、自动配置原理、核心语法到实战案例,全方位讲解SpringBoot整合Thymeleaf 的核心知识点。Thymeleaf 是 SpringBoot 官方推荐的模板引擎,无需复杂配置即可快速集成,其模板文件默认存放于 resources/templates 目录,支持 $ {}(变量读取)、* {}(对象属性简化)、# {}(国际化)、@ {}(URL 生成)四大核心表达式及丰富运算语法,搭配 th:text th:each th:if 等实用指令,能高效实现动态渲染、循环、条件判断等

2302_79781252的博客 612

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Thymeleaf+SpringMVC 自动配置

Thymeleaf 记忆点:4 种标准表达式、全套 th 标签、templates 页面约定路径;SpringMVC 自动配置:DispatcherServlet、视图解析器、消息转换器全部自动装配,扩展必须实现;SpringBoot Web 两大资源规则:静态资源 4 个目录、Thymeleaf 模板 templates 目录;容器两种部署模式:jar 内置 Tomcat、war 外置 Tomcat,适配不同业务场景。

2201_75940978的博客 241

Thymeleaf教程 (四) Thymeleaf标准表达式语法(上)

我们已经知道了两种语法<p th:utext="#{home.welcome}">Welcome to our grocery store!</p> <p>Today is: <span th:text="${today}">13 february 2011</span></p>但是还有很多语法我们不知道,接下来我们快速的介绍更多的表达式语法: 简单表示式:变量表达式: ${…} 选择变量表达式:

mygzs的专栏 1万+

Thymeleaf 标准表达式语法

使用和显示变量@Controller public class HomeController { @RequestMapping("home") public String toHome(Model model){ model.addAttribute("home", "这是首页"); return "home"; } }<html xmlns:

架构之路 9712
上一篇: Spring Boot 引入 Thymeleaf 及入门
下一篇: Thymeleaf th:* 设置/修改属性值详解
yyangqqian
博客等级 码龄15年 406粉丝 406原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值