Thymeleaf 模板 springboot集成使用
一.Thymeleaf是什么?
简单说, Thymeleaf 是一款用于渲染XML/XHTML/HTML5内容的模板引擎,类似我之前用过的FreeMarker 。由于它支持 html 原型,然后在 html 标签里
通过增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
优势:1.Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言。
2.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
1.添加依赖。
2.html 页面需添加:
<html xmlns:th="http://www.thymeleaf.org">
二.基本使用.
1.定义和引用模板
日常开发中,我们经常会将导航栏,页尾,菜单等部分提取成模板供其它页面使用。
在Thymeleaf 中,我们可以使用th:fragment
属性来定义一个模板。
我们可以新建一个简单的页尾模板,如:/WEB-INF/templates/footer.html,内容如下:
上面定义了一个叫做copyright
的片段,接着我们可以使用th:include
或者th:replace
属性来使用它:
th:include 和 th:replace区别
th:include 是加载模板的内容,而th:replace则会替换当前标签为模板中的标签
三.其他常见,字面量,对象,集合等的应用
后台存入了测试数据
@PostMapping("/greet")
public ModelAndView greetingSubmit(@ModelAttribute(value="greeting") Greeting greeting) {
ModelAndView mov = new ModelAndView("result");
greeting.setNow(new Date());
greeting.setRole("admin");
ArrayList<Greeting> list = new ArrayList<>();
list.add(greeting);
list.add(greeting);
list.add(greeting);
mov.addObject("greeting",greeting);
mov.addObject("name","bin");
mov.addObject("execMode","execMode");
mov.addObject("list",list);
return mov;
}
页面的获取方法
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Result</h1>
<!--/*@thymesVar id="greeting" type="com.zto.quickstart.model.Greeting"*/--> <!--bean值替换 -->
<div th:object="${greeting}">
<p th:text="'id: ' + *{id}"/>
<p th:text="'content: ' + *{content}"/> <!--日期格式 -->
<p th:text="'content: ' + ${#dates.format(greeting.now, 'yyyy-MM-dd')}">2017-12-01</p> <!--字符串替换 -->
<span th:text="'Welcome , '+ ${name} +'!'"/> <!--运算符/条件-->
<p th:if="${greeting.id} > 1" />
<p th:text ="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"/> <!--Thymeleaf同样支持多路选择Switch结构-->
<div th:switch="${greeting.role}">
<p th:case="'admin'">User is admin</p>
<p th:case="#{roles.manager}">User is a manager</p>
<!--默认属性default可以用*表示-->
<p th:case="*">这里的内容都会输出</p>
</div>
<table>
<tr>
<th>id</th>
<th>content</th>
<th>now</th>
</tr>
<tr th:each="list : ${greeting}">
<td th:text="${greeting.id}">Onions</td>
<td th:text="${greeting.content}">2.41</td>
<td th:text="${#dates.format(greeting.now, 'yyyy-MM-dd')}">8</td>
</tr>
</table> <h4>Thymeleaf提供了一系列Utility对象(内置于Context中),可以通过#直接访问</h4>
<!--<h5>#dates日期日期格式化</h5>-->
<!--${#dates.format(date, 'dd/MMM/yyyy HH:mm')}-->
<!--${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}-->
<!--${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}-->
<!--${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}--> <!--date-->
<h5>#dates创建日期</h5>
<p th:text="${#dates.createNow()}"></p>
<p th:text="${#dates.createToday()}"></p> <!--String-->
<h5>String判断字符串是否为空</h5>
<p th:text="${#strings.isEmpty(name)}"></p>
<h5>String判断内对象是否为空</h5>
<p th:text="${#strings.listIsEmpty(list)}"></p>
<!--${#strings.arrayIsEmpty(nameArr)}-->
<!--${#strings.setIsEmpty(nameSet)}-->
<p th:text="${#strings.startsWith(name,'bin')}"></p>
<p th:text="${#strings.endsWith(name,'bin')}"></p>
<h5>String判断内长度</h5>
<p th:text="${#strings.length(list)}"></p>
<h5>String判断equals</h5>
<p th:text="${#strings.equals(name)}"></p> <a href="/greeting">Submit another message</a> <div th:include="footer :: copyright"></div>
</div> </body>
页面展示的效果
四.表单中的使用
</head>
<body>
<h4>测试表单</h4>
<!--/*@thymesVar id="greeting" type="com.zto.quickstart.model.Greeting"*/-->
<!--/*@thymesVar id="Greeting" type=""*/-->
<form th:action="@{/greet}" th:object="${greeting}" method="post" th:method="post">
<!--bean值替换 -->
<input type="text" th:field="${greeting.id}"/>
<input type="text" th:field="*{content}"/>
<input type="submit"/> </form>
</body>
</html>
其中th:object="${greeting}"指定了对象属性绑定。与后台控制器接受的对象一致,如下:
@PostMapping("/greet")
public ModelAndView greetingSubmit(@ModelAttribute(value="greeting") Greeting greeting) {
...
return mov;
}
Thymeleaf 模板 springboot集成使用的更多相关文章
- SpringBoot 集成Spring security
Spring security作为一种安全框架,使用简单,能够很轻松的集成到springboot项目中,下面讲一下如何在SpringBoot中集成Spring Security.使用gradle项目管 ...
- springboot集成模板引擎freemarker和thymeleaf
freemarkder和thymeleaf都是java的模板引擎,这里只介绍这两种模板引擎如何在sprongboot中配置: 1. freemarkder 1.1 在pom.xml中添加依赖包 < ...
- 九、SpringBoot集成Thymeleaf模板引擎
Thymeleaf咋读!??? 呵呵,是不是一脸懵逼...哥用我的大学四级英文知识告诉你吧:[θaimlif]. 啥玩意?不会音标?...那你就这样叫它吧:“赛母李府”,大部分中国人是听不出破绽的.. ...
- SpringBoot集成thymeleaf(自定义)模板中文乱码的解决办法
楼主今天在学习SpringBoot集成thymelaf的时候报了中文乱码的错误,经过网上的搜索,现在得到解决的办法,分享给大家: package com.imooc.config; import or ...
- SpringBoot集成freemarker和thymeleaf模板
1.在MAVEN工程POM.XML中引入依赖架包 <!-- 引入 freemarker 模板依赖 --> <dependency> <groupId>org.spr ...
- SpringBoot集成Thymeleaf模板
1.添加起步依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- springboot用thymeleaf模板的paginate分页
本文根据一个简单的user表为例,展示 springboot集成mybatis,再到前端分页完整代码(新手自学,不足之处欢迎纠正): 先看java部分 pom.xml 加入 <!--支持 Web ...
- 【Springboot】Springboot整合Thymeleaf模板引擎
Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...
- SpringBoot 之Thymeleaf模板.
一.前言 Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1.JSP 最明显的问题在于它看起来像HTML或X ...
随机推荐
- Python初学者的经历
刚开始安装了个python3.6的版本,自己写了个hello world ,发现可以运行,后面又网上找到了下载酷狗音乐的代码,结果报各种包没有,使用pip安装也各种安装不起来 又从网上找了python ...
- Redis 安装和配置(一)
一. mac下redis的安装 1. 官网http://redis.io/ 下载最新的稳定版本,这里是3.2.0 2. sudo mv 到 /usr/local/ 3. sudo tar -zxf r ...
- Java8新特性——lambda表达式.(案例:公司业务)
需求:现有一个员工姓名list,其中包含单字母索引.要求输出一个字符串,去掉所有单字母,所有名字首字母大写并用逗号隔开. package cn._2.thecompanyprocess; import ...
- fis3前端工程构建配置入门教程
一.前言 fis3是百度推出的一款前端工程构建工具,类似的还有webpack,gulp等工具:无论大家有没有使用过,从事前端行业应该都略知一二了,所以对于此类工具用干嘛的我这里就不做重复了. 其实对于 ...
- Codeforces Gym101246C:Explode 'Em All(DP + bitset)
http://codeforces.com/gym/101246/problem/C 题意:给出一个n*m的图,“*”表示这个地方需要炸掉,炸弹可以如果丢在(i,j)位置的话,那么可以炸掉第i行第j列 ...
- BZOJ 1001:[BeiJing2006]狼抓兔子(最小割)
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 题意:中文. 思路:很明显是最小割,转化为最大流做.一开始看那么多点,但还是试了一下,居然过了 ...
- Codeforces 755C:PolandBall and Forest(并查集)
http://codeforces.com/problemset/problem/755/C 题意:该图是类似于树,给出n个点,接下来p[i]表示在树上离 i 距离最远的 id 是p[i],如果距离相 ...
- vue中轮播图的实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 绝对是全网最好的Splay 入门详解——洛谷P3369&BZOJ3224: Tyvj 1728 普通平衡树 包教包会
平衡树是什么东西想必我就不用说太多了吧. 百度百科: 一个月之前的某天晚上,yuli巨佬为我们初步讲解了Splay,当时接触到了平衡树里的旋转等各种骚操作,感觉非常厉害.而第二天我调Splay的模板竟 ...
- apache开启vhost后localhost和127.0.0.1无法访问
自己单独搭建了php+mysql+apach+windows环境:后面又开启apache的虚拟主机vhost;然后自己配置虚拟主机站点可以正常访问,但是localhost和127.0.0.1无法访问, ...