3.3 Thymeleaf语法

文章目录

  • 引言
  • Thymeleaf标签
    • 显示标签
    • 链接地址标签
    • 条件判断标签
    • 元素遍历标签
  • Thymeleaf表达式
    • 变量表达式
    • 选择变量表达式
    • 消息表达式
    • 链接表达式
  • Thymeleaf内置对象
    • 上下文对象
    • 上下文变量
    • 上下文区域
    • 请求对象
    • 响应对象
    • 会话对象
    • 日期对象
  • 实战演练
    • 创建控制器
    • 创建模板页面
  • 结语

在这里插入图片描述

引言

Thymeleaf是一个功能强大的Java模板引擎,它提供了丰富的语法和表达式,使得开发者能够轻松地构建动态Web页面。在本讲稿中,我们将深入探讨Thymeleaf的标签、表达式和内置对象,以便更好地理解和使用这一工具。

Thymeleaf标签

显示标签

  • th:text:用于指定标签显示的文本内容。例如,<p th:text="${message}">你好,世界!</p> 将显示变量message的值。
  • th:utext:与th:text类似,但不对特殊字符进行转义,适用于需要显示HTML内容的场景。

链接地址标签

  • th:href:针对<a>标签的href属性和<link>标签的href属性,用于指定链接地址。
  • th:src:针对<img>标签的src属性和<script>标签的src属性,用于指定资源的链接地址。

条件判断标签

  • th:if:用于条件判断,如果条件为真,则渲染该标签内的HTML内容。
  • th:unless:与th:if相反,如果条件为假,则渲染该标签内的HTML内容。
  • th:switchth:case:用于多分支条件判断,类似于Java中的switch语句。

元素遍历标签

  • th:each:用于遍历集合的元素,类似于Java中的for循环。

Thymeleaf表达式

变量表达式

  • ${...}:用于获取上下文中的变量值。例如,在案例3.2中的${currentDate}用于获取当前日期。

选择变量表达式

  • *{...}:用于从被选定对象获取属性值,通常与th:object属性一起使用。

消息表达式

  • #{...}:用于Thymeleaf模板页面国际化内容的动态替换和展示。

链接表达式

  • @{...}:用于页面跳转或资源的引入,类似于构建URL。

Thymeleaf内置对象

上下文对象

  • #ctx:代表当前的Thymeleaf上下文对象。

上下文变量

  • #vars:提供对当前模板上下文中所有变量的访问。

上下文区域

  • #locale:提供对当前区域设置的访问。

请求对象

  • #request:提供对当前HTTP请求对象的访问。

响应对象

  • #response:提供对当前HTTP响应对象的访问。

会话对象

  • #session:提供对当前HTTP会话对象的访问。

日期对象

  • #dates#calendars:提供日期和日历操作功能,例如格式化日期。

实战演练

让我们通过一个简单的例子来演示Thymeleaf语法的实际应用。

创建控制器

首先,创建一个控制器,用于处理请求并添加模型属性:

@Controller
public class ExampleController {@RequestMapping("/example")public String example(Model model) {model.addAttribute("user", new User("张晓峰", 30));return "example";}
}

创建模板页面

然后,创建一个Thymeleaf模板页面example.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Thymeleaf示例</title>
</head>
<body><p th:text="${user.name} + '的年龄是 ' + ${user.age}">默认文本</p><p th:if="${user.age > 18}">用户是成年人</p><p th:unless="${user.age > 18}">用户是未成年人</p><div th:each="item : ${user.items}"><p th:text="${item}">默认文本</p></div>
</body>
</html>

在这个例子中,我们使用了th:text来显示用户的姓名和年龄,th:ifth:unless来进行条件判断,以及th:each来遍历用户的项目列表。

结语

通过本讲稿,我们详细了解了Thymeleaf的标签、表达式和内置对象。这些知识将帮助你在实际开发中更加灵活和高效地使用Thymeleaf来构建动态Web页面。记得在实际应用中,根据项目需求选择合适的语法和表达式。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sim卡文件系统

### 5.2 初始通信建立程序 初始通信建立程序应遵循3GPP TS 31.101 [55]的规定&#xff0c;但有以下限制&#xff1a; - 对于3V及以下的SIM卡&#xff0c;最大时钟频率为4MHz&#xff0c;因此必须遵守3GPP TS 31.101 [55]中规定的相应功耗限制。 - ATR内容&#xff1a;如果SIM在…

C++调试方法(Vscode)(二) ——本地调试(ROS版)

初学者在调试一段代码的时候&#xff0c;经常出于不明原因&#xff0c;写出bug&#xff0c;导致程序崩溃。但是定位崩溃的地方时&#xff0c;往往采用简单而朴素的方法&#xff1a;即采用cout或者printf进行输出。这种方式既原始&#xff0c;又低效。一个合格的工程师应该是通过…

NeRS: Neural Reflectance Surfaces for Sparse-view 3D Reconstruction in the Wild

阅读记录&#xff1a; 1. 2.优点1&#xff1a;我们的方法仅依赖于近似的相机位姿估计和粗略的类别级形状模板。 3.我们的关键见解是&#xff0c;我们可以强制执行基于表面的 3D 表示&#xff0c;而不是允许广泛用于体积表示的无约束密度。重要的是&#xff0c;这允许依赖于视…

C# 图像镜像

测试页面&#xff1a; 图像镜像是图像旋转变换的一种特殊情况&#xff0c;通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心&#xff0c;将图像分为左右两部分进行堆成变换。如下&#xff1a; 垂直镜像通常是以原图像的水平中轴线为中心&#xff0c;…

【NLP自然语言处理】03 - 使用Anaconda创建新的环境/pycharm切换环境

NLP基础阶段&#xff1a;创建新的虚拟环境 第一步&#xff1a;查看有多少个虚拟环境 conda env list 第二步&#xff1a;创建一个新的虚拟环境&#xff0c;起个名字&#xff1a;nlpbase 打开anconda prompt终端&#xff0c;输入命令: conda create -n nlpbase python3.10 第三步…

React Agent 自定义实现

目录 背景 langchin 中的 agent langchin 中 agent 的问题 langchain 的 agent 案例 自定义 React Agent 大模型 工具定义 问题设定 问题改写&#xff0c;挖掘潜在意图 React Prompt 下一步规划 问题总结 代码 背景 之前使用过 langchian 中的 agent 去实现过一些…

高级算法设计与分析 学习笔记12 贪心算法

首先我们来解决一个经典的活动选择问题&#xff1a; s代表开始时间&#xff0c;f代表结束时间 可以看到这是一个动态规划的算法 现在&#xff0c;我们要把这个解决办法转换成一个贪心算法 直觉上讲&#xff0c;每次都选最先结束的可以留下最多的资源 当然开始之前先要把所有时…

[Python学习日记-43] Python 中的迭代器

[Python学习日记-43] Python 中的迭代器 简介 可迭代对象 迭代器 总结 简介 前面我们学习了各种各样的数据类型&#xff0c;在使用它们的时候我们也时不时会听到可迭代对象这一个名词&#xff0c;而本篇我们将讲述的迭代器感觉和我们之前学的可迭代对象挺相关的&#xff0c…

URDF统一机器人建模语言

统一机器人建模语言 URDF&#xff08;Unified Robot Description Format&#xff09;统一机器人描述格式&#xff0c;URDF使用XML格式描述机器人文件。 我们从下面四个方面介绍URDF&#xff1a; URDF的组成介绍 URDF-Link介绍 URDF-Joint介绍 创建一个简单的URDF…

五年以上倾斜摄影osgb模型转3dtiles如何在mars3d加载

方案一&#xff1a; // 兼容1.50 &#xff08;2018-10-01)版本更改了名称&#xff0c;造成部分3dtiles可能会出现加载不上导致渲染停止的错误。 // 错误说明为&#xff1a;RuntimeError: Unsupported glTF Extension: KHR_technique_webgl // 原因&#xff1a;KHR_technique_w…

Java基础常见面试题总结(上)

基础概念与常识 Java 语言有哪些特点? 简单易学&#xff08;语法简单&#xff0c;上手容易&#xff09;&#xff1b;面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff1b;平台无关性&#xff08; Java 虚拟机实现平台无关性&#xff09;&…

【9724】基于springboot+vue的篮球竞赛预约平台

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 本次设计任务是要设计一个篮球竞赛预约平台&#xff0c…

软件架构师 PV

PV操作与生产者消费者问题是操作系统中进程管理和同步机制的重要概念。以下是对PV操作以及生产者消费者问题的详细解释&#xff1a; 一、PV操作 PV操作由P操作原语和V操作原语组成&#xff0c;这两个原语是不可中断的过程&#xff0c;它们对信号量进行操作。 P操作&#xff…

泰克MDO3054示波器特性和规格Tektronix MSO3054 500M 四通道

Tektronix MDO3054 示波器&#xff0c;混合域&#xff0c;500 MHz&#xff0c;4 通道&#xff0c;5 GS/s 泰克 MDO3054 混合域示波器是终极 6 合 1 集成示波器&#xff0c;包括可选的集成频谱分析仪、任意函数发生器、逻辑分析仪、协议分析仪和数字电压表/计数器。泰克 MDO305…

(25)QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真

文章目录 前言一、MATLAB仿真代码二、仿真结果 前言 QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真MATLAB代码。 一、MATLAB仿真代码 代码如下&#xff1a; nSamp 8; % 矩形脉冲的采样点数 nSymbol 1000000; % 传输的符号…

霍夫圆型硬币检测Matlab程序

1. 图像读取和预处理 使用MATLAB的uigetfile函数读取图像&#xff0c;可以从文件系统中选择图像文件。读取的图像随后经过灰度化处理&#xff0c;将彩色图像转换为灰度图像&#xff0c;以降低计算复杂度并去除不必要的颜色信息。 2. 中值滤波 在图像预处理过程中&#xff0c;…

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态&#xff0c;对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码&#xff0c;发现web-view是给绝对定…

EasyOCR——超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法

背景 最近在实际操作阿拉伯文小语种OCR功能的时候&#xff0c;尝试了诸多开源算法&#xff0c;但效果均不尽如人意。 说实在的&#xff0c;针对阿拉伯文的OCR开源算法&#xff0c;若仅仅是效果没那么优秀&#xff0c;比如识别率能有个70%80%&#xff0c;我还能微调微调&#…

例行性工作(at,crontab)

&#xff08;一&#xff09;单一执行的例行性工作&#xff1a; ----at &#xff08;1&#xff09;原理&#xff1a;仅处理执行一次就结束了 &#xff08;2&#xff09;命令及其解释&#xff1a; &#xff08;2.1&#xff09;at命令格式&#xff1a;at [参数] [执行时间] &am…

C++ Builder XE12关于KonopkaControls与TMS VCL UI Pack组件的安装

1、先打开open project&#xff0c;选中安装的组件工程&#xff0c;并打开。 2、在option中设置 3、点击编译并进行安装install