上一节我们简单的认识了 Thymeleaf,并简单介绍了它与 Spring Boot 的结合,这一节来具体的看一下,Thymeleaf 是的语法和应用。

创建模版文件

创建文件其实在上节中已经说过,这边在重复一遍,新建 HTML 文件,在头文件中添加 xmlns:th="http://www.thymeleaf.org"

1
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"></html>

注意:html 中的标签必须严格规范,标签必须闭合,即<div />技术或者</div>类似结束。

表达式语法

它们分为四类:

  • 1.变量表达式
  • 2.选择或星号表达式
  • 3.通用 Message 表达式
  • 4.URL表达式

变量表达式

ongl标准语法或者 Spring EL 表达式 ${user.userName},它们将以 html 标签的一个属性来表示

选择或星号表达式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div th:object="${user}">
<p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="*{lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text=*{nationality}">Saturn</span>.</p>
</div>
等价于
<div>
<p>Name: <span th:text="${user.firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="${user.lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text="${user.nationality}">Saturn</span>.</p>
</div>
当然了,这两者可以混合使用
还有一种方式
<div>
<p>Name: <span th:text="*{user.name}">Sebastian</span>.</p>
<p>Surname: <span th:text="*{user.surname}">Pepper</span>.</p>
<p>Nationality: <span th:text="*{user.nationality}">Saturn</span>.</p>
</div>

通用 Message 表达式

通用表达式允许我们从外部的配置文件(properties)中取值,用 Key,Value的形式。

1
2
#{main.title}  
#{message.entrycreated(${entryId})}

可以在模板文件中找到这样的表达式代码:

1
2
3
4
<table>  
<th th:text="#{header.address.city}">...</th>
<th th:text="#{header.address.country}">...</th>
</table>

URL表达式

URL表达式指的是把一个有用的上下文或回话信息添加到URL,这个过程经常被叫做URL重写。
@{/order/list}
URL还可以设置参数:
@{/order/details(id=${orderId})}
相对路径:
@{../documents/report}

表达式支持的语法

字面(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, main,…

文本操作(Text operations)

  • 字符串连接(String concatenation): +
  • 文本替换(Literal substitutions): |The name is ${name}|

算术运算(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)

th 标签

参考 thymeleaf 官方文档:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.pdf

常用的使用方法

相关参考和链接

Thymeleaf 模板的使用:http://www.cnblogs.com/lazio10000/p/5603955.html

新一代Java模板引擎Thymeleaf:https://www.tianmaying.com/tutorial/using-thymeleaf

ddAnswer

更多文章请关注微信公众号: zhiheng博客

如果文章对你有用,转发分享、点赞赞赏才是真爱 [斜眼笑]