Thymeleaf

坍缩协程
• 阅读 1056

4.2 Thymeleaf

​ Thymeleaf是一种现代的基于服务器端的Java模板引擎技术,也是一个优秀的面向Java的XML、XHTML、HTML5页面模板,它具有丰富的标签语言、函数和表达式,在使用Spring Boot框架进行页面设计时,一般会选择Thymeleaf模板

4.2.1 Thymeleaf语法

常用标签

在HTML页面上使用Thymeleaf标签,Thymeleaf 标签能够动态地替换掉静态内容,使页面动态展示。

为了大家更直观的认识Thymeleaf,下面展示一个在HTML文件中嵌入了Thymeleaf的页面文件,示例代码如下:

html

<!DOCTYPE html>

<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>

<meta charset="UTF-8">

<link rel="stylesheet" type="text/css" media="all"

href="../../css/gtvg.css" th:href="@{/css/gtvg.css}" />

<title>Title</title>

</head>

<body>

<p th:text="${hello}">欢迎进入Thymeleaf的学习</p>

</body>

</html>

​ 上述代码中,“xmlns:th="http://www.thymeleaf.org"“ 用于引入Thymeleaf模板引擎标签,使用关键字“th”标注标签是Thymeleaf模板提供的标签,其中,“th:href”用于引入外联样式文件,“th:text”用于动态显示标签文本内容。

除此之外,Thymeleaf模板提供了很多标签,接下来,通过一张表罗列Thymeleaf的常用标签

| th:标签 | 说明 |

| th:insert | 布局标签,替换内容到引入的文件 |

| th:replace | 页面片段包含(类似JSP中的include标签) |

| th:each | 元素遍历(类似JSP中的c:forEach标签) |

| th:if | 条件判断,如果为真 |

| th:unless | 条件判断,如果为假 |

| th:switch | 条件判断,进行选择性匹配 |

| th:case | 条件判断,进行选择性匹配 |

| th:value | 属性值修改,指定标签属性值 |

| th:href | 用于设定链接地址 |

| th:src | 用于设定链接地址 |

| th:text | 用于指定标签显示的文本内容 |

标准表达式

​ Thymeleaf模板引擎提供了多种标准表达式语法,在正式学习之前,先通过一张表来展示其主要语法及说明

| 说明 | 表达式语法 |

| 变量表达式 | ${...} |

| 选择变量表达式 | *{...} |

| 消息表达式 | \#{...} |

| 链接URL表达式 | @{...} |

| 片段表达式 | ~{...} |

1.变量表达式 ${...}**

​ 变量表达式${...}主要用于获取上下文中的变量值,示例代码如下:

html

<p th:text="${title}">这是标题</p>

示例使用了Thymeleaf模板的变量表达式${...}用来动态获取P标签中的内容,如果当前程序没有启动或者当前上下文中不存在title变量,该片段会显示标签默认值“这是标题”;如果当前上下文中存在title变量并且程序已经启动,当前P标签中的默认文本内容将会被title变量的值所替换,从而达到模板引擎页面数据动态替换的效果

同时,Thymeleaf为变量所在域提供了一些内置对象,具体如下所示

# ctx:上下文对象

# vars:上下文变量

# locale:上下文区域设置

# request:(仅限Web Context)HttpServletRequest对象

# response:(仅限Web Context)HttpServletResponse对象

# session:(仅限Web Context)HttpSession对象

# servletContext:(仅限Web Context)ServletContext对象

​ 结合上述内置对象的说明,假设要在Thymeleaf模板引擎页面中动态获取当前国家信息,可以使用#locale内置对象,示例代码如下

html

The locale country is: <span th:text="${#locale.country}">US</span>.

​ 上述代码中,使用th:text="${#locale.country}"动态获取当前用户所在国家信息,其中<span>标签内默认内容为US(美国),程序启动后通过浏览器查看当前页面时,Thymeleaf会通过浏览器语言设置来识别当前用户所在国家信息,从而实现动态替换

2.选择变量表达式 {...}

​ 选择变量表达式和变量表达式用法类似,一般用于从被选定对象而不是上下文中获取属性值,如果没有选定对象,则和变量表达式一样,示例代码如下

html

<div th:object="${book}">

<p>titile: <span th:text="*{title}">标题</span>.</p>

</div>

{title} 选择变量表达式获取当前指定对象book的title属性值。

3.消息表达式 #{...}

​ 消息表达式#{...}主要用于Thymeleaf模板页面国际化内容的动态替换和展示,使用消息表达式#{...}进行国际化设置时,还需要提供一些国际化配置文件。关于消息表达式的使用,后续会详细说明

4.链接表达式 @{...}

链接表达式@{...}一般用于页面跳转或者资源的引入,在Web开发中占据着非常重要的地位,并且使用也非常频繁,示例代码如下:

html

view

view

​ 上述代码中,链接表达式@{...}分别编写了绝对链接地址和相对链接地址。在有参表达式中,需要按照@{路径(参数名称=参数值,参数名称=参数值...)}的形式编写,同时该参数的值可以使用变量表达式来传递动态参数值

5.片段表达式 ~{...}

片段表达式~{...}用来标记一个片段模板,并根据需要移动或传递给其他模板。其中,最常见的用法是使用th:insert或th:replace属性插入片段,示例代码如下:

html

<div th:insert="~{thymeleafDemo::title}"></div>

​ 上述代码中,使用th:insert属性将title片段模板引用到该<div>标签中。thymeleafDemo为模板名称,Thymeleaf会自动查找“/resources/templates/”目录下的thymeleafDemo模板,title为片段名称

刚学了拉勾教育的《Java工程师高薪训练营》,看到刚学到的点就回答了。希望拉勾能给我推到想去的公司,目标:字节!!

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Easter79 Easter79
3年前
springboot中使用jsp
  接SpringBoot快速入门(Eclipse);步骤一:视图支持  Springboot的默认视图支持是Thymeleaf,但是Thymeleaf我们不熟悉,我们熟悉的还是jsp。所以下面是讲解如何让Springboot支持jsp。  Thymeleaf是一种JavaXML/XHTML/HTML5的网站模版系统。(后面
Stella981 Stella981
3年前
Spring Boot(三):Thymeleaf 使用详解
在上篇文章SpringBoot(二):web应用开发,实现CRUD(https://my.oschina.net/u/4006148/blog/3163419)中简单介绍了一下Thymeleaf,这篇文章将更加全面详细的介绍Thymeleaf的使用。Thymeleaf是新一代的模板引擎,在Spring4.0中推荐使用Thymeleaf来
Wesley13 Wesley13
3年前
thinkphp3.2.3模板渲染支持三元表达式
thinkphp3.2.3模板渲染支持三元表达式{$status?'正常':'错误'}{$info'status'?$info'msg':$info'error'}注意:三元运算符中暂时不支持点语法。如下:           <divclass"modalhidefade"id'myModa
Stella981 Stella981
3年前
SpringBoot使用JavaMailSender发送邮件(2)
为了更容易更规范维护邮件内容,我们推荐使用模板引擎技术。常用的模板引擎有这几种Thymeleaf、FreeMarker、Velocity等。我们在这里就使用前面两种来实现发送邮件。一、使用Thymeleaf模板技术发送邮件Thymeleaf是SpringBoot推荐的官方模板引擎技术,使用非常的简单方便。(1)添加依赖
Stella981 Stella981
3年前
Spring Boot 与 Kotlin使用Spring
在《SpringBoot与Kotlin使用JdbcTemplate连接MySQL》中介绍了一种基本的数据访问方式,结合构建RESTfulAPI和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端和Web站点的开发任务了。然而,在实际开发过程中,对数据库的操作无非就“增删改查”。就最为普遍的单表操作而言,除了表和字段不
Easter79 Easter79
3年前
SpringBoot使用JavaMailSender发送邮件(2)
为了更容易更规范维护邮件内容,我们推荐使用模板引擎技术。常用的模板引擎有这几种Thymeleaf、FreeMarker、Velocity等。我们在这里就使用前面两种来实现发送邮件。一、使用Thymeleaf模板技术发送邮件Thymeleaf是SpringBoot推荐的官方模板引擎技术,使用非常的简单方便。(1)添加依赖
Stella981 Stella981
3年前
Play之Scala
现在几乎每个web语言都会有这样那样的模板供你选择,如果你曾经使用过任何一种模板,我想模板这个概念你能很清晰的阐明,我借用类与对象的关系进行阐述:模板的功能就是将(含有模板元素的)页面实例化输出。每个人对模板的概念都不一而同,但模板干的事情几乎都是一致的渲染页面!Play的模板在HTML基础上直接基于Scala语言,模板文件通常存放在/app
Easter79 Easter79
3年前
Thymeleaf实用实例
1\.简介之前一直使用Freemarker,对Thymeleaf了解但是不熟悉,最近因为其他项目组他们要快速搭建后台,使用了一个三方的框架用到了Thymeleaf,所以进一步了解了一些。发现Thymeleaf更加像前端的模板语言,所以对静态页面有更好的兼容性,就是,如果是Freemarker模板文件,浏览器是解析不了的,会直接出错。而
Stella981 Stella981
3年前
Freemark(一): 简介及其使用
1\.Freemark简介FreeMarker是一款模板引擎:一种基于魔板的、用来生成输出文本的通用工具。类似模板引擎还有Velocity,CommonTemplate等。对于javaweb开发来说,使用FreeMarker模板,可以将java代码从页面中分离出来。开发人员只需关注业务逻辑代码,而由页面设计人员去设
坍缩协程
坍缩协程
Lv1
自卑溢出来就变成了安静和温柔。
文章
4
粉丝
0
获赞
0