引入 Thymeleaf
修改 html 标签用于引入 thymeleaf 引擎,这样才可以在其他标签里使用 th:* 语法,这是下面语法的前提。
1 |
|
获取变量值
1 | <p th:text="'Hello!, ' + ${name} + '!'" >name</p> |
可以看出获取变量值用 $
符号,对于javaBean的话使用 变量名.属性名
方式获取,这点和 EL
表达式一样.
另外 $
表达式只能写在th标签内部,不然不会生效,上面例子就是使用 th:text
标签的值替换 p
标签里面的值,至于 p
里面的原有的值只是为了给前端开发时做展示用的.这样的话很好的做到了前后端分离.
引入 URL
Thymeleaf 对于 URL 的处理是通过语法 @{…}
来处理的
1 | <a th:href="@{http://www.baidu.com}">绝对路径</a> |
类似的标签有:th:href 和 th:src
字符串替换
很多时候可能我们只需要对一大段文字中的某一处地方进行替换,可以通过字符串拼接操作完成:
1 | <span th:text="'Welcome to our application, ' + ${user.name} + '!'"> |
一种更简洁的方式是:
1 | <span th:text="|Welcome to our application, ${user.name}!|"> |
当然这种形式限制比较多,|…|中只能包含变量表达式${…},不能包含其他常量、条件表达式等。
运算符
在表达式中可以使用各类算术运算符,例如+, -, *, /, %
1 | th:with="isEven=(${prodStat.count} % 2 == 0)" |
逻辑运算符>, <, <=,>=,==,!=都可以使用,唯一需要注意的是使用<,>时需要用它的HTML转义符:
1 | th:if="${prodStat.count} > 1" |
条件
if/unless
Thymeleaf 中使用 th:if
和 th:unless
属性进行条件判断,下面的例子中,标签只有在 th:if
中条件成立时才显示:
1 | <a th:href="@{/login}" th:unless=${session.user != null}>Login</a> |
th:unless
于 th:if
恰好相反,只有表达式中的条件不成立,才会显示其内容。
switch
Thymeleaf 同样支持多路选择 Switch 结构:
1 | <div th:switch="${user.role}"> |
默认属性 default 可以用 * 表示:
1 | <div th:switch="${user.role}"> |
循环
渲染列表数据是一种非常常见的场景,例如现在有 n 条记录需要渲染成一个表格,该数据集合必须是可以遍历的,使用 th:each
标签:
1 | <body> |
可以看到,需要在被循环渲染的元素(这里是)中加入 th:each
标签,其中 th:each="prod : ${prods}"
意味着对集合变量 prods
进行遍历,循环变量是 prod
在循环体中可以通过表达式访问。
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !