spring boot:thymeleaf模板中insert/include/replace三种引用fragment方式的区别(spring boot 2.3.3)
一,thymeleaf模板中insert/include/replace三种引用fragment方式的区别
insert: 把整个fragment(包括fragment的节点tag)插入到当前节点内部,
replace:用fragment(包括fragment的节点tag)替换掉当前节点
include:把fragment的内容(不包括fragment的节点)插入到当前节点内容
文字描述还是不够直观,
看代码的测试更容易了解三者的区别
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,演示项目的相关信息
1,项目地址:
https://github.com/liuhongdi/fragment
2,功能说明:
演示了thymeleaf模板:insert/include/replace三种引用fragment方式的区别
3,项目结构:如图:

三,配置文件说明
1,pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--thymeleaf begin-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2,application.properties
#error
server.error.include-stacktrace=always
#error
logging.level.org.springframework.web=trace #thymeleaf
spring.thymeleaf.cache=false
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
四,java代码说明
1,HomeController.java
@RequestMapping("/home")
@Controller
public class HomeController {
    @GetMapping("/home")
    public String index(ModelMap modelMap) {
        return "home/home";
    }
}
2,footer.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<span style="background: #ffff00;" th:fragment="copytxt">
2013-2019 数据文化传播有限公司版权所有
</span>
</body>
</html>
3,home.html
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div style="width:100%;height:30px;background:#ffffff;font-size: 16px;" ></div>
<div id="content" style="width:1040px;">
<div style="width:790px;float:left;margin-left:30px;">
<!--main begin-->
<div style="background: #ff0000;width:400px;height:100px;" th:insert="common/footer :: copytxt"></div>
<div style="background: #00ff00;width:400px;height:100px;" th:replace="common/footer :: copytxt"></div>
<div style="background: #0000ff;width:400px;height:100px;" th:include="common/footer :: copytxt"></div>
<!--main end-->
</div>
</div>
</body>
</html>
分别用三种方式引用footer中的copytxt片断,
比较异同
五,测试效果
1,访问home:
http://127.0.0.1:8080/home/home
如图:

查看源代码比较:
<!--main begin-->
<div style="background: #ff0000;width:400px;height:100px;"><span style="background: #ffff00;">
2013-2019 数据文化传播有限公司版权所有
</span></div>
<span style="background: #ffff00;">
2013-2019 数据文化传播有限公司版权所有
</span>
<div style="background: #0000ff;width:400px;height:100px;">
2013-2019 数据文化传播有限公司版权所有
</div>
<!--main end-->
可以看到三者的区别:
insert:把整个fragment插入到当前节点内部,
replace:用fragment替换到当前节点
include:把fragment的内容(不包括fragment的节点)插入到当前节点
六,查看spring boot版本:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.3.RELEASE)
spring boot:thymeleaf模板中insert/include/replace三种引用fragment方式的区别(spring boot 2.3.3)的更多相关文章
- javascript中var let const三种变量声明方式
		
javascript中var let const三种变量声明方式 1.var ①var表示声明了一个变量,并且可以同时初始化该变量. ②使用var语句声明的变量的作用域是当前执行位置的上下文:一个函 ...
 - Spring学习(十八)Bean 的三种依赖注入方式介绍
		
依赖注入:让调用类对某一接口实现类的依赖关系由第三方注入,以移除调用类对某一接口实现类的依赖.接下来将详细的向大家介绍Spring容器支持的三种依赖注入的方式以及具体配置方法:• 属性注入方法• ...
 - .NET中的三种接口实现方式
		
摘自:http://www.cnblogs.com/zhangronghua/archive/2009/11/25/1610713.html 一般来说.NET提供了三种不同的接口实现方式,分别为隐式接 ...
 - spring boot: thymeleaf模板引擎使用
		
spring boot: thymeleaf模板引擎使用 在pom.xml加入thymeleaf模板依赖 <!-- 添加thymeleaf的依赖 --> <dependency> ...
 - eclipse 设置文本模板中 insert variable... 函数 详解
		
设置文本模板简要图: 设置文本模板详细过程:http://www.cnblogs.com/lsy131479/p/8478711.html 此处引出设置文本模板中 insert variable... ...
 - 深入浅出spring IOC中三种依赖注入方式
		
深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...
 - C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()
		
本文给大家介绍C语言中最常用的三种输入输出函数scanf().printf().getchar()和putchar(). 一.scanf()函数格式化输入函数scanf()的功能是从键盘上输入数据,该 ...
 - Binding 中 Elementname,Source,RelativeSource 三种绑定的方式
		
在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. so ...
 - ASP.NET缓存中Cache过期的三种策略
		
原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. <asp:Button ID=&quo ...
 
随机推荐
- linux系统漏洞扫描工具lynis
			
lynis 是一款运行在 Unix/Linux 平台上的基于主机的.开源的安全审计软件.Lynis是针对Unix/Linux的安全检查工具,可以发现潜在的安全威胁.这个工具覆盖可疑文件监测.漏洞.恶意 ...
 - SpringMVC-12-SSM回顾与总结
			
12.SSM回顾与总结
 - 云计算openstack——云计算、大数据、人工智能(16)
			
一.互联网行业及云计算 在互联网时代,技术是推动社会发展的驱动,云计算则是一个包罗万象的技术栈集合,通过网络提供IAAS.PAAS.SAAS等资源,涵盖从数据中心底层的硬件设置到最上层客户的应用.给我 ...
 - 新手接触springboot
			
新手使用springboot或者说,刚接触java行业,有些不明白的就是项目的架构是怎么样的,我今天在这儿稍微整理了一下 有些新手可能在想,springboot是怎么解决最原始的增-删-改-查, 快速 ...
 - DC4靶机
			
DC-4靶机渗透 扫描内网机器,看到143是开启的,那么ok了,确定了目标主机的地址. 对其进行进一步的端口扫描,80,22端口都是开放的. 访问具体网页,进行爆破,分别为admin,happy. 里 ...
 - MGRE及实验
			
tunnel 隧道:一种的简单的VPN技术: 普通的tunnel为点到点网络类型: 生成隧道接口,流量通过路由查询后,若通过隧道接口转发时,需要在原有的三层报头前,再添加一个公有地址间的报头: 将两个 ...
 - Python-为元组中每个元素命名
			
学生信息系统: (名字,年龄,性别,邮箱地址) 为了减少存储开支,每个学生的信息都以一个元组形式存放 如: ('tom', 18,'male','tom@qq.com' ) ('jom', 18,'m ...
 - 故意使用free掉的内存的一个实验( 常量区/栈)
			
故意使用free掉的内存的一个实验 考虑一下两种声明 struct stuff{ char home[10]; int num; char name[10]; }; struct stuff{ cha ...
 - 设计模式PDF下载了4.0万本!那,再肝一本《Java面经手册》吧!
			
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 1. 先祝贺下自己拿下4.0万本下载量! <重学Java设计模式>PDF ...
 - 票房和口碑称霸国庆档,用 Python 爬取猫眼评论区看看电影《我和我的家乡》到底有多牛
			
今年的国庆档电影市场的表现还是比较强势的,两名主力<我和我的家乡>和<姜子牙>起到了很好的带头作用. <姜子牙>首日破 2 亿,一举刷新由<哪吒之魔童降世&g ...