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 ...
随机推荐
- Liunx 安装 Nessus
Liunx 安装 Nessus 啥子是Nessus 它是一款系统漏洞扫描与分析软件,可以扫描服务器存在哪些漏洞,页面简介美观,非常Nice. 获取激活码 首先访问如下网站 https://www. ...
- Niginx简单的配置
#user nobody; #这里的数值不能超过 CPU 的总核数,因为在单个核上部署超过 1 个 Nginx 服务进程并不起到提高性能的作用.worker_processes 2; #nginx进程 ...
- Java Volatile 关键字详解
原文链接:https://www.cnblogs.com/zhengbin/p/5654805.html 一.基本概念 先补充一下概念:Java 内存模型中的可见性.原子性和有序性. 可见性: 可见性 ...
- Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务
现有混合云平台的场景下,即有线下和线上的环境,又有测试与正式的场景,而且结合了Docker,导致打包内容有所区分,且服务的发布流程复杂起来,手工打包需要在编译阶段就要根据环境到处更改配置,因此纯手工发 ...
- UVa 10480:Sabotage (最小割集)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- POJ 2679:Adventurous Driving(SPFA+DFS)
http://poj.org/problem?id=2679 Adventurous Driving Time Limit: 1000MS Memory Limit: 65536K Total S ...
- K2工作流引擎Demo
---恢复内容开始--- 以前的工作都是电商网站形式的,从未接触过工作流相关工作,新公司是传统制造业行业,我进的这个组又是做工作流这块相关工作的,所以避免不了和工作流打交道. 这边工作流主要用K2来做 ...
- 什么是Task
什么是Task Task是.Net4.0新增用来处理异步编程的,叫做基于“任务编程模型”,任务其实是架构在线程之上的,具体操作的时候还是由线程去执行的,任务的管控有点类似于线程池,程序中开10个Tas ...
- 使用@Transactional注意的问题
@Transactional 基本原理概述 在应用系统调用声明@Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,根据@ ...
- 接口文档注解:@ApiOperation
@ApiOperation不是spring自带的注解是swagger里的 com.wordnik.swagger.annotations.ApiOperation; @ApiOperation和@Ap ...