Thymeleaf入门基础
一.简介
1.thymeleaf优点
①是一个支持html原型的自然引擎,它在html标签增加额外的属性来达到模板+数据的展示方式,由于浏览器解释html时,忽略未定义的标签属性,因此thymeleaf的模板可以静态运行。;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
②提供标准和spring标准两种方言,可以直接套用模板实现JSTL、OGNL表达式效果,同时开发人员也可以扩展和创建自定义的方言。
③提供spring标准方言和一个与SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器等功能
2.模板样式
允许使用六种模板,每个被称为一种模板模式:HTML、XML、TEXT、JAVASCRIPT、CSS、RAW。这其中有两种标记语言模板模式(HTML,XML),三种文本语言模板模式(TEXT,JAVASCRIPT,CSS),和一种无操作模板模式(RAW)
3.官网地址:http://www.thymeleaf.org
二.集成方式
1.thymeleaf + SpringMVC
❶引入相应jar包

❷在xml中配置thymeleaf视图解析器

❸传统jsp开发采用SpringMVC的视图解析器

❹集成了Spring 3.x 和Spring 4.x 根据需要选择不同的jar包
官网地址:http://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html
2.thymeleaf + SpringBoot
❶引入相应jar包

❷在yml中配置thymeleaf视图解析器

3.HTML头文件格式

三.标准表达式语法
1.支持语法
- 简单表达式:
- 变量表达式: ${...}
- 选择变量表达式: *{...}
- 消息表达式: #{...}
- 链接URL表达式: @{...}
- 片段表达式: ~{...}
- 字面
- 文本文字:'one text','Another one!',...
- 号码文字:0,34,3.0,12.3,...
- 布尔文字:true,false
- 空文字: null
- 文字标记:one,sometext,main,...
- 文字操作:
- 字符串连接: +
- 文字替换: |The name is ${name}|
- 算术运算:
- 二元运算符:+,-,*,/,%
- 减号(一元运算符): -
- 布尔运算:
- 二元运算符:and,or
- 布尔否定(一元运算符): !,not
- 比较和平等:
- 比较:>,<,>=,<=(gt,lt,ge,le)
- 平等运营商:==,!=(eq,ne)
- 有条件的操作符:
- IF-THEN: (if) ? (then)
- IF-THEN-ELSE: (if) ? (then) : (else)
- 默认: (value) ?: (defaultvalue)
- 特殊令牌:
- 无操作: _
2.变量表达式

3.选择表达式(也叫星号表达式)

4.文字国际化表达式
从一个外部文件获取区域文字信息(.properties)。
th:text:转义HTML代码
th:utext:不会转义HTML代码

5.URL表达式
绝对路径:@{ http://www.thymeleaf.org}
相对路径:@{/order/{id}/details(id=${orderId})}
6.内联js
引入 th:inline="javascript"
[[***]]:转义HTML代码
[(***)]:不会转义HTML代码

7.模板布局(片段引用)
引入 th:fragment 或者直接使用选择器
th:insert:插入指定的片段作为其主机标签的主体
th:replace:用指定的片段来替换它的主机标签
th:include:只是插入这个片段的内容


8.常用th标签

9.表达式工具对象
#execInfo:关于正在处理的模板的信息。
#messages:在变量表达式中获得外部化消息的方法,与使用#{...}语法获得的方式相同。
#uris:用于转义URL / URI部分的方法
#conversions:执行配置的转换服务的方法(如果有的话)。
#dates:针对java.util.Date对象的方法,包括日期格式化等
#calendars:类似于#dates,但是对于java.util.Calendar对象。
#numbers:针对numeric对象格式化的方法。
#strings:针对String对象的方法:contains,startsWith,prepending / appending等
#objects:针对object的方法。
#bools:针对boolean运算的方法。
#arrays:针对数组的方法。
#lists:针对List的方法。
#sets:针对Set的方法。
#maps:针对Map的方法。
#aggregates:在数组或集合上创建聚合的方法。
#ids:处理可能重复的id属性的方法(例如,作为迭代的结果)。
例如:
dates
${#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')}
${#dates.createNow()}
${#dates.createToday()}
strings
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}
${#strings.length(str)}
${#strings.equals(str)}
${#strings.equalsIgnoreCase(str)}
Thymeleaf入门基础的更多相关文章
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- 01shell入门基础
01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...
- Markdown入门基础
// Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...
- JavaScript入门基础
JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...
- C++ STL编程轻松入门基础
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
- AngularJS入门基础PPT(附下载链接)
学习了Angularjs有段时间,自己写了一个PPT,个人认为总结的非常全面,对于入门基础够了. 大致模块有:Angularjs简单介绍,Angularjs特性,hello world,Control ...
随机推荐
- action之间传参为中文;type='redirect'和 type='redirectAction'主要区别
摘录自:http://blog.csdn.net/lhi705/article/details/7446156 Struts2中action之间传参中文乱码的问题 解决方法一(已经验证,可以): 两个 ...
- express官网学习笔记
npm init 创建一个package.json npm install express --save-dev 安装到项目依赖 便于多人开发 路由结构定义 app.METHOD(PATH, HAND ...
- python_如何通过twisted实现数据库异步插入?
如何通过twisted实现数据库异步插入? 1. 导入adbapi 2. 生成数据库连接池 3. 执行数据数据库插入操作 4. 打印错误信息,并排错 #!/usr/bin/python3 __auth ...
- BSA Network Shell系列-redi命令
redi ## 1 功能概述 redi将输出重定向到一个文件中 ## 2 语法 redi [-?] [-a] filename ## 3 使用示例 1 将输出重定向到隐式路径所在主机的/tmp/hah ...
- java里程碑之泛型--泛型注意的几点
1,泛型的基本语法:类名<具体类> 对象名 = new 类名<具体类>().类型参数规范如下: 1),K键,比如映射的键,key的类型 2),V值,比如Map的值,value类 ...
- SQL模板资源管理器,你用了吗?
SQL Server Management Studio 有个模板资源管理器,不知你用过没有?使用模板创建脚本.自定义模板等功能能大大提高你的工作效率,如果没有尝试过,赶紧去试试吧.很多时候,我们习惯 ...
- zabbix_Agent 监控配置说明
Agent 监控配置说明 Linux安装Agent 1.查看系统版本 查看系统版本 uname -a1根据系统版本下载对应的zabbix-agent版本安装 下载地址:http://repo.zabb ...
- 【转】matlab图形句柄详解(一)
在matlab中,每一个对象都有一个数字来标识,叫做句柄.当每次创建一个对象时,matlab就为它建立一个唯一的句柄,句柄中包含有该对象的相关信息参数,可以在后续程序中进行操作,改变其中的参数,以便达 ...
- Ubantu搭建FTP
1.安装并启动 FTP 服务 安装 VSFTPD 使用 apt-get 安装 vsftpd kylin@kylin:~$ sudo apt-get install vsftpd -y [sudo] p ...
- Model和ModelAndView
在请求处理方法可出现和返回的参数类型中,最重要的就是Model和ModelAndView.对于MVC框架,控制器Controller执行业务逻辑,用于产生模型数据Model,而试图View则用于渲染模 ...