这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战
Thymeleaf 的基本用法
属于个人整理的文档,大部分内容来源自网络
在这里我们没有打算使用SpringMVC进行整合使用或者说跟Spring Boot 一起使用
我们在这里单独使用Servelet版本-算是为了给一些初学者提供部分代码
Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎,类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。
Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用,但是总是看到说其效率有点低
1 | html复制代码Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。 |
1.引入提示
在html页面中引入thymeleaf命名空间,即,此时在html模板文件中动态的属性使用th:命名空间修饰 。
1 | html复制代码<html lang="en" xmlns:th="http://www.thymeleaf.org"> |
这样才可以在其他标签里面使用th:*这样的语法.这是下面语法的前提.
2.变量表达式(获取变量值)
1 | html复制代码<div th:text="'你是否读过,'+${session.book}+'!!'"> |
1 | html复制代码代码分析: |
3.URL表达式(引入URL)
重点!重点!重点!
- 引用静态资源文件(CSS使用th:href,js使用使用th:src)
- href链接URL(使用th:href)
1 | html复制代码代码分析 |
4.选择或星号表达式
表达式很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行*{customer.name}
1 | html复制代码<div th:object="${session.user}"> |
1 | html复制代码1.如果不考虑上下文的情况下,两者没有区别;星号语法评估在选定对象上表达,而不是整个上下文,什么是选定对象?就是父标签的值。上面的*{title}表达式可以理解为${book.title}。(父对象) |
小插曲:三和四的变量表达式、URL表达式所对应的属性都可以使用统一的方式:th.attr=“属性名=属性值”的方式来设置,参考第“七.设置属性值”部分
5.文字国际化表达式
j简单看一下就可以,文字国际化表达式允许我们从一个外部文件获取区域文字信息(.properties),用Key索引Value,还可以提供一组参数(可选).
1 | html复制代码#{main.title} |
- 表达式支持的语法
- 字面量(Literals)
+ 文本文字(Text literals): 'one text', 'Another one!',…
+ 数字文本(Number literals): 0, 34, 3.0, 12.3,…
+ 布尔文本(Boolean literals): true, false
+ 空(Null literal): null
+ 文字标记(Literal tokens): one , sometext
- 文本操作(Text operations)
+ 字符串连接(String concatenation): `+`
+ 文本替换(Literal substitutions): `|The name is ${name}|`
1
2
3
4
5
html复制代码<div th:class="'content'">...</div>
<span th:text="|Welcome to our application, ${user.name}!|">
//Which is equivalent to:
<span th:text="'Welcome to our application, ' + ${user.name} + '!'">
<span th:text="${onevar} + ' ' + |${twovar}, ${threevar}|">
- 算术运算(Arithmetic operations)
+ 二元运算符(Binary operators): + , - , \* , / , %
+ 减号(Minus sign (unary operator)): -
- 布尔操作(Boolean operations)
+ Binary operators: and , or
+ Boolean negation (unary operator): ! , not
- 比较和等价(Comparisons and equality)
+ Comparators: > , < , >= , <= ( gt , lt , ge , le )
+ Equality operators: == , != ( eq , ne )
- 条件运算符(Conditional operators)三元运算符
+ If-then: (if) ? (then)
+ If-then-else: (if) ? (then) : (else)
+ Default: (value) ?: (defaultvalue)
1 | html复制代码示例一: |
- Special tokens:
+ No-Operation: \_
- switch
- 循环
渲染列表数据是一种非常常见的场景,例如现在有n条记录需要渲染成一个表格或li列表标签该数据集合必须是可以遍历的,使用th:each
标签
1 | html复制代码代码分析: |
利用状态变量判断:
7.设置属性值
1 | html复制代码1. th:attr |
8.内嵌变量Utilities
为了模板更加易用,Thymeleaf还提供了一系列Utility对象(内置于Context中),可以通过#直接访问。
1 | properties复制代码dates : java.util.Date的功能方法类 |
1 | html复制代码代码示例: |
9.thymeleaf布局
10.附录
thymeleaf_3.0.5_中文参考手册 提取码:emk0
本文转载自: 掘金