一.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} &gt; 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集成使用的更多相关文章

  1. SpringBoot 集成Spring security

    Spring security作为一种安全框架,使用简单,能够很轻松的集成到springboot项目中,下面讲一下如何在SpringBoot中集成Spring Security.使用gradle项目管 ...

  2. springboot集成模板引擎freemarker和thymeleaf

    freemarkder和thymeleaf都是java的模板引擎,这里只介绍这两种模板引擎如何在sprongboot中配置: 1. freemarkder 1.1 在pom.xml中添加依赖包 < ...

  3. 九、SpringBoot集成Thymeleaf模板引擎

    Thymeleaf咋读!??? 呵呵,是不是一脸懵逼...哥用我的大学四级英文知识告诉你吧:[θaimlif]. 啥玩意?不会音标?...那你就这样叫它吧:“赛母李府”,大部分中国人是听不出破绽的.. ...

  4. SpringBoot集成thymeleaf(自定义)模板中文乱码的解决办法

    楼主今天在学习SpringBoot集成thymelaf的时候报了中文乱码的错误,经过网上的搜索,现在得到解决的办法,分享给大家: package com.imooc.config; import or ...

  5. SpringBoot集成freemarker和thymeleaf模板

    1.在MAVEN工程POM.XML中引入依赖架包 <!-- 引入 freemarker 模板依赖 --> <dependency> <groupId>org.spr ...

  6. SpringBoot集成Thymeleaf模板

    1.添加起步依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  7. springboot用thymeleaf模板的paginate分页

    本文根据一个简单的user表为例,展示 springboot集成mybatis,再到前端分页完整代码(新手自学,不足之处欢迎纠正): 先看java部分 pom.xml 加入 <!--支持 Web ...

  8. 【Springboot】Springboot整合Thymeleaf模板引擎

    Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...

  9. SpringBoot 之Thymeleaf模板.

    一.前言 Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1.JSP 最明显的问题在于它看起来像HTML或X ...

随机推荐

  1. Hive的一些学习内容

    Hive相关 什么是metastore? metadata是元数据,包含数据库.表.字段.分区等信息.作用:客户端连接MetaStore服务,metastore再去连接MySQL数据库存储元数据,有了 ...

  2. spring boot 2.x 系列 —— actuator 服务监控与管理

    文章目录 一.概念综述 1.1 端点 1.2 启用端点 1.3 暴露端点 1.4 健康检查信息 二.项目说明 1.1 项目结构说明 1.2 主要依赖 1.3 项目配置 1.4 查看监控状态 三.自定义 ...

  3. .netcore Control调用View方法

    控制器代码如下: 视图代码如下: 完整项目代码参考网址:https://github.com/gamecc666/BackTipFrontProject 版权声明:本文为博主原创文章,如需转载,请标明 ...

  4. 机器学习读书笔记(二)使用k-近邻算法改进约会网站的配对效果

    一.背景 海伦女士一直使用在线约会网站寻找适合自己的约会对象.尽管约会网站会推荐不同的任选,但她并不是喜欢每一个人.经过一番总结,她发现自己交往过的人可以进行如下分类 不喜欢的人 魅力一般的人 极具魅 ...

  5. JDK源码阅读(一):Object源码分析

    最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己 所以开始写JDK源码分析的文章 阅读JDK版本为1.8 目录 Object结构图 构造器 equals 方法 getClass 方法 has ...

  6. 基础数据类型,格式化输出,以及for循环的使用

    基础数据类型总览 int :数字类型,可以+-*/等等操作 str:字符串类型,存储少量的数据,+*int 切片等 bool :里面包含True,False这两种值,用来判断真假. list :列表 ...

  7. flask 请求上下文源码(转)

    本篇阅读目录 一.flask请求上下文源码解读 二.http聊天室(单聊/群聊)- 基于gevent-websocket 回到顶部 转:https://www.cnblogs.com/li-li/p/ ...

  8. django基础知识之中间件:

    中间件 是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中 每个中间件 ...

  9. web前端css(一)

    一  css的引入方式: 1)    行内样式:     <p style=”color: green”>我是一个段落</p> 2)    内接样式: <style ty ...

  10. 2017《java技术预备作业》

    2017<java技术预备作业> 1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 亦师亦友,很多人这样说,确实,倘若师生之间如果中间有些隔阂最终吃亏的始终是学生.我认为师生之间应 ...