Thymeleaf的常用语法

news2024/11/16 1:26:17

🌟 Thymeleaf的常用语法

Thymeleaf是一个Java模板引擎,用于处理HTML、XML、JavaScript、CSS等文件。它可以与Spring框架无缝集成,为Web应用程序提供优雅的模板解决方案。本文将介绍Thymeleaf的常用语法,包括th属性、表达式、内置对象、内置方法等。

🎨 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属性用于设置<title><h1>标签的文本内容。当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">
    /*<![CDATA[*/
    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>

🚦 switch多分支

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的常用语法有了一定的了解。在实际项目中,你可以根据需要灵活运用这些语法,编写出优雅、高效的模板。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot 中的 @RestController 注解,如何使用

Spring Boot 中的 RestController 注解 在 Spring Boot 中&#xff0c;我们经常需要编写 RESTful Web 服务&#xff0c;以便于客户端与服务器之间的通信。为了简化 RESTful Web 服务的开发&#xff0c;Spring Boot 提供了 RestController 注解&#xff0c;它可以让我们更方便地…

Jmeter实现参数加密

目录 一、使用__digest自带函数 以md5加密算法演示使用方法 二、在BeanShell 中使用JAVA代码实现算法加密 规避BUG的方法 JMeter有两种方法可以实现算法加密 一、使用__digest自带函数 参数说明&#xff1a; Digest algorithm&#xff1a;算法摘要&#xff0c;可输入值&a…

如何避免在处理数据时出现错误?

介绍 当业务运营管道中发生大量事情时&#xff0c;数据输入任务的优先级往往较低。但是&#xff0c;数据输入被认为是所有行业部门中经常发生的最重要的任务之一。从销售数据到客户分析&#xff0c;从财务数据到库存管理&#xff0c;每项工作都依赖于数据输入&#xff0c;这意…

前端vue入门(纯代码)16

【18.如何在Vue中配置代理服务器】 vue脚手架配置代理总结&#xff1a;修改了vue.config.js文件后必须重启项目【npm run serve】 方法一 ​ 在vue.config.js中添加如下配置&#xff1a; devServer:{proxy:"http://localhost:5000" }说明&#xff1a; 优点&#…

家政上门预约小程序;

家政上门预约小程序开发是一款本地生活类服务上门预约系统&#xff0c;覆盖家政保洁、保姆月嫂、上门维修、管道疏通、上门安装等各种到家服务。可以帮助创业者在不需要相关技术人员及大量资金投入的情况下&#xff0c;就能够轻松搭建并运营一个上门家政服务平台。 那么开发一…

【零基础入门学习Python---Python错误处理和异常保姆级教程】

&#x1f680; Python &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【图像处理OpenCV(C++版)】——5.3 图像平滑之均值平滑(滤波)

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

Flutter学习四:Flutter开发基础(一)Widget

目录 0 引言 1 Widget 简介 1.1 Widget 概念 1.2 Widget 接口 1.3 Flutter中的四棵树 1.4 StatelessWidget 1.4.1 简介 1.4.2 Context上下文 1.5 StatefulWidget 1.6 State 1.6.1 简介 1.6.2 State生命周期 1.7 在 widget 树中获取State对象 1.7.1 通过Context…

详解如何使用nvm管理Node.js多版本

目录 NVM进行NodeJS多版本管理 背景 安装步骤 1. 下载nvm安装包 2. 安装nvm 使用步骤 下载nodejs 切换版本nodejs ​编辑 常用命令 NVM进行NodeJS多版本管理 背景 有的时候开发环境需要多个NodeJS的版本&#xff0c;这个时候就可以用NVM进行管理。 安装步骤 1. 下载n…

9 从0开始学PyTorch | 过拟合欠拟合、训练集验证集、关闭自动求导

这一小节在开始搞神经网络之前&#xff0c;我们先熟悉几个概念&#xff0c;主要还是把模型训练的流程打通。 过拟合和欠拟合 我们在日常的工作中&#xff0c;训练好的模型往往是要去评价它的准确率的&#xff0c;通过此来判断我们的模型是否符合我的要求。 几个可能的方案是&…

国外学位论文去哪里查找下载

查找下载国外博士论文最合适的文献数据库就是ProQuest学位论文全文数据库。 ProQuest学位论文全文数据库覆盖了大部分北美地区高等院校以及世界其他地区数千个高等院校每年获得通过的博硕士论文。是将ProQuest公司PQDD文摘库&#xff08;现名PQDT&#xff09;中适合中国科研人…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2023)

Windows 11 绕过 TPM 方法总结&#xff0c;通用免 TPM 镜像下载 (2023 年 6 月更新) 在虚拟机、Mac 电脑和 TPM 不符合要求的旧电脑上安装 Windows 11 的通用方法总结 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11-no-tpm/&#xff0c;查看最新版。原创作品…

nuxt3 多级动态路由

需求&#xff1a; 写法&#xff1a; 对应 文件目录 pages\product\[class]\[brand]\[SPU].vue pages/ --| product/ ----| [class] ------| [brand] --------| [SPU].vue script 内跳转方法 const router useRouter() const nuxtApp useNuxtApp()const jumpSPU () >…

caffeine和google-guava cache缓存使用详解和源码介绍

google-guava cache 1.pom引入其依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version></dependency> 2.具体使用 com.google.common.cache.LoadingCache<Strin…

【selenium】问题记录

1、驱动和浏览器版本不一致 报错&#xff1a;selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 106 问题原因&#xff1a; chrome版本114&#xff0c;Chromedriver版本106 …

机器学习之深度神经网络

目录 卷积神经网络与全连接神经网络 前向后向传播推导 通用手写体识别模型 人脸识别模型 电影评论情感分析模型 卷积神经网络与全连接神经网络 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;和全连接神经网络&#xff08;Fully Conn…

Django学习笔记-用户名密码登录

笔记内容转载自 AcWing 的 Django 框架课讲义&#xff0c;课程链接&#xff1a;AcWing Django 框架课。 CONTENTS 1. 扩充Django数据库2. 实现获取用户信息3. 渲染登录与注册界面4. 实现登录与登出功能5. 实现注册功能6. 修改获取用户信息 1. 扩充Django数据库 首先我们先在 s…

JavaWeb学习路线(7)——文件上传

一、概念 &#xff08;一&#xff09;文件上传概念&#xff1a; 指将本地的图片、视频、音频等文件上传到服务器&#xff0c;供其他用户浏览或下载的过程。 &#xff08;二&#xff09;前端文件上传三元素 method“post”&#xff08;form&#xff09;enctype“multipart/for…

四、Bean 的作用域,Bean 的自动装配以及通过注解实现 Bean 的自动装配

文章目录 一、Bean 的作用域二、Bean 的自动装配三、通过注解实现 Bean 的自动装配 一、Bean 的作用域 Spring 官网 Bean 的作用域讲解 单例(Singleton)作用域&#xff1a;在这种作用域下&#xff0c;容器只会创建一个Bean实例对象&#xff0c;无论该Bean被注入到多少个其它B…

Unity使用MySQL

效果&#xff1a; 问题记录&#xff1a; unity mysql “The given key ‘utf8mb4‘ was not present in the dictionary” – 我这里数据库字符集没有utf8&#xff0c;改选utf8mb4 – 这个改了&#xff0c;那么MySQL配置文件也得改了。如下&#xff1a; – 然后还报错&…