th:insert、th:replace、th:include抽取和引用页面公共片段、传参等
一、抽取公共片段
- th:fragment 给片段命名
将公共片段抽取出来,并在顶级标签内使用th:fragment给该片段命名。
例如:将公共片段抽取出来放到comment/bar.html中:

<nav class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0" th:fragment="topbar">
<a class="navbar-brand col-sm-3 col-md-2 mr-0" href="http://getbootstrap.com/docs/4.0/examples/dashboard/#">Company name</a>
<input class="form-control form-control-dark w-100" type="text" placeholder="Search" aria-label="Search">
<ul class="navbar-nav px-3">
<li class="nav-item text-nowrap">
<a class="nav-link" href="http://getbootstrap.com/docs/4.0/examples/dashboard/#">Sign out</a>
</li>
</ul>
</nav>
这样我们就抽取了一个名叫topbar的公共片段。
二、引入公共片段
1.三种引入片段的方式:
- th:insert :将公共片段插入到声明引入的标签中
- th:replace:将公共片段替换掉声明引入的标签
- th:include:将公共片段中的内容包含进声明引入的标签内。
这三中引入的效果如下:
公共片段:
<footer th:fragment="copy">
© 2011 The Good Thymes Virtual Grocery
</footer>
th:insert :
<div th:insert="footer :: copy"></div> 效果:
<div>
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
</div>
th:replace:
<div th:replace="footer :: copy"></div>
效果:
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
th:include:
<div th:include="footer :: copy"></div>
效果:
<div>
© 2011 The Good Thymes Virtual Grocery
</div>
2.引入片段的表达式
在上边例子中我们可能有疑问 footer :: copy 这是什么意思?
其实这是一种引入片段的表达式之一,下面我们讲两种引入片段的表达式。
(1) 通过片段名引入片段的表达式: ~{模板名::片段名}
如我们需要引入上边第一部分演示的片段,我们需要这样写
<div th:replace="~{commons/bar::topbar}"></div>
注意 ~{}可以省略,开发中常常不会写~{}的方式来引入,而是通过下边这种,更加简洁。但是如果是行内写法,则必须加上~{},例如 [[~{}]] 或 [(~{ })]
<div th:replace="commons/bar::topbar"></div>
(2)通过选择器引入片段的表达式:~{模板名::选择器}
例如引入id为user的片段:
<div th:replace="commons/bar::#user"></div>
#号为id选择器
三、引用片段并传参
1.传递参数
只需要在表达式后边跟个小括号即可传递参数,小括号内通过键值对的方式设置值(key=value)
<div th:replace="commons/bar::topbar(username='zhangsan')"></div>
2.获取参数
在目标页面(引用片段表达式中模板名对应的页面)通过变量表达式${} 获取值即可。
<h4 th:text="${username}"></h4>
th:insert、th:replace、th:include抽取和引用页面公共片段、传参等的更多相关文章
- 关于thymeleaf th:replace th:include th:insert 的区别
关于thymeleaf th:replace th:include th:insert 的区别 th:insert :保留自己的主标签,保留th:fragment的主标签. th:re ...
- MYSQL开发性能研究——INSERT,REPLACE,INSERT-UPDATE性能比较
一.为什么要有这个实验 我们的系统是批处理系统,类似于管道的架构.而各个数据表就是管道的两端,而我们的程序就类似于管道本身.我们所需要做的事情无非就是从A表抽取数据,经过一定过滤.汇总等操作放置到B表 ...
- MyBatis_tp50_动态sql_sql标签_抽取可重用的sql片段_使用include标签进行引用
笔记要点出错分析与总结 include内部使用自定的属性,之能使用$ {}来取值 ,#{}不能用 工程组织数据库组织0.重新修改Bean类1.定义接口 public interface Employe ...
- sqlite "insert or replace" 和 "insert or ignore" 用法
insert or replace:如果不存在就插入,存在就更新insert or ignore:如果不存在就插入,存在就忽略只对UNIQUE约束的字段起作用.举例:建表:CREATE TABLE T ...
- Mysql INSERT、REPLACE、UPDATE的区别
用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSE ...
- Sqlite执行insert or ignore 或insert or replace语句。
Sqlite执行insert or ignore 或insert or replace语句. ,); ,); 上面的第一条语句是每次执行时,如果不存在,则添加,如果存在,则更新. 上面的第二条语句是每 ...
- 转载:mysql 操作总结 INSERT和REPLACE
转自:http://www.jb51.net/article/19411.htm 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做 ...
- mybatis动态sql中的sql标签——抽取可重用的sql片段
1.用<sql>标签抽取可重用的sql片段 <!-- 抽取可重用的SQL片段,方便后面引用 1.sql抽取,经常将要查询的列名,或者插入用的列名,之后方便引用 ...
- C++ map.insert 传参类型不同,构造/析构次数不同
1. 传参方式 使用 insert 为 map 插值时,insert 的传参包含以下几种可能: make_pair 生成对象 pair(key_type, value_type) 生成对象 pair( ...
随机推荐
- Day003 巧妙验证短路运算
&&的短路运算 条件1&&条件2...&&条件n,程序会先判断条件1,如果条件1为false,则不判断后面的条件,直接返回false 怎么判断程序到底有 ...
- 密码学系列之:NIST和SHA算法
目录 简介 SHA1 SHA2 SHA3 简介 SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种.这三种算法都是由美国NIST制定的. N ...
- @RequestParam、@PathVariable、 @RequestBody用法
Get和Post请求 get方式的请求是没有请求体的.但是get有query string parameter .比如url?name=zhangsan post请求发现了两种请求体.一种是FromD ...
- Windows bat批处理删除指定N天前的文件
1:新建批处理文件:del_old_file.bat,更改系统时间为7天前,在c盘sql back 目录下新建测试文件,再将系统时间改为正确时间 2:编辑内容: rem 删除C:\sql back目录 ...
- Day015 异常处理机制
异常处理机制 抛出异常 捕获异常 异常处理的五个关键字 try:监控一个代码块,有异常就能通过catch捕获 catch(想要捕获的异常类型):捕获想要捕获的异常,catch代码块的代码只有在捕获到异 ...
- 重新整理 .net core 实践篇————配置应用[一]
前言 本来想整理到<<重新整理.net core 计1400篇>>里面去,但是后来一想,整理 .net core 实践篇 是偏于实践,故而分开. 因为是重新整理,那么就从配置开 ...
- JMM——Java内存模型抽象|八种同步操作|操作规则
JMM 调用栈&本地变量在线程栈上 对象整体在堆上(包括其本地变量,不论类型),栈有其引用即可访问, 线程调用同一个对象时,是访问该对象的私有拷贝 每个CPU有自己的高速缓存 高速缓存存在意义 ...
- 认识 Spring Cloud Alibaba
个人理解 Spring Cloud Alibaba 就是 Spring Cloud 的微服务规范的一种实现,外加一些阿里云的商业组件 Spring Cloud 是什么 Spring Cloud 为开发 ...
- calico NetworkPolicy on kubernetes
什么是网络策略 在Kubernetes平台中,要实现零信任网络的安全架构,Calico与istio是在Kubernetes集群中构建零信任网络必不可少的组件. 而建立和维护整个集群中的"零信 ...
- 【转载】使用rdp协议访问远程Linux桌面
使用rdp协议访问远程Linux桌面 2017年03月31日 16:23:49 太阳之影 阅读数:2169 一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需 ...