Thymeleaf的官网为: http://www.thymeleaf.org/
一、变量表达式${…}
使用${…}括起来的表达式,称为变量表达式。该表达式的内容会显示在HTML标签体文本处。
该表达式一般都是通过th:text标签属性进行展示的
处理器类
修改index页面
二、选择表达式*{…}
选择表达式,也称为星号表达式,其是使用*{…}括起来的表达式。一般用于展示对象的属性。该表达式的内容会显示在HTML标签体文本处。但其需要与th:object标签属性联用,先使用th:object标签选择了对象,再使用*{…}选择要展示的对象属性。该表达式可以有效降低页面中代码的冗余。
不过,其也可以不与th:object标签联用,在*{…}中直接使用“对象.属性”方式,这种写法与变量表达式相同。
该表达式一般都是通过th:text标签属性进行展示的
(3)URL表达式@{…}
使用@{…}括起来,并且其中只能写一个绝对URL或相对URL地址的表达式,称为URL表达式。这个绝对/相对URL地址中一般是包含有动态参数的,需要结合变量表达式${…}进行字符串拼接。
@{…}中的URL地址具有三种写法。
A、以http协议开头的绝对地址
在进行字符串拼接时使用加号(+)连接,容易出错。但使用双竖线则无需字符串拼接,简单易读。但是,Idea会对其中的问号(?)报错,不过其不影响运行
在页面通过查看源码可以看到其解析结果。当然,对于and符(&)Thymeleaf会将其解析为实体形式(&),但浏览器会对(&)进行正确解析
B、以/开头的相对地址
在URL表达式中,Thymeleaf会将开头的斜杠(/)解析为当前工程的上下文路径ContextPath,而浏览器会自动为其添加“http://主机名:端口号”,即其即为一个绝对路径
在页面通过查看源码可以看到其解析结果中已经添加了上下文路径
C、不以/开头的相对地址
在页面通过查看源码可以看到其解析结果中是未添加任何东西的,即没有上下文路径。也就是说,其是相对于当前请求路径的一个相对地址
三、Thymeleaf常见属性
逻辑运算相关属性
(1) th:if
该属性用于逻辑判断,类似于JSTL中的<c:if/>
(2) th:switch/th:case
一旦某个case与switch的值相匹配了,剩余的case则不再比较。th:case=”*”表示默表示默认的case,前面的case都不匹配时候执行该case
(3) th:each
该属性用于遍历数组、List、Set、Map,类似于JSTL中的<c:forEach/>
A、遍历List
遍历数组、Set与遍历List方式是相同的
B、遍历Map
Map的键值对是一个Map.Entry对象
四、html标签相关
(1) th:text/th:utext
这两个属性均用于在标签体中显示动态文本。但不同的是,th:utext会解析文本中的HTML标签,而th:text则是原样显示
controller
页面
效果
(2) th:name/th:value
该属性用于获取标签动态name属性值,及标签的默认value值
controller
页面
效果
(3) URL路径相关
th:action、th:src、th:href,这三个都是与URL路径相关的属性。若这些URL中包含有动态参数,则它们的值需要URL表达式@{…}与变量表达式${…}配合使用。
controller
页面
更多
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#javascript-inlining