Thymeleaf 基本语法
常用表达式
- 变量表达式 ${ }
- 使用方法:th:xx = “${ }” 获取对象属性值给 th:xx 。
- 后台代码:
Student s=new Student(2019001,"小明");
model.addAttribute("stu",s);
- 前端代码:
${stu.***} 获得stu对象属性值
th:text:文本标签,用于进行文本替换
<p th:text="${stu.id}"></p>
<p th:text="${stu.name}"></p>
补充:th:text 和 th:utext
- th:text 不会解析html(称为被HTML转义)
- th:utext 会解析html(称为不执行HTML转义)
- 后台代码:
model.addAttribute("msg","<h1>hello</h1>");
- 前端代码:
<p th:text = "${msg}" >hello</p>
<p th:utext = "${msg}" >hello</p>
- 运行结果:
${ } 一些用法示例
字符串连接、数学运算、布尔逻辑和三目运算等。
- 字符串连接:
<p th:text=" '欢迎' + ${stu.name} ">hello</p>
- 错误用法:
<p th:text=" 欢迎 ${stu.name} ">hello</p>
- | | 和 + 效果一样
<p th:text=" |欢迎 ${stu.name}| ">hello</p>
- 三目运算
<p th:text=" '欢迎' + ${ stu.name!=null ? stu.name : 'nobody' } ">hello</p>
- 算数运算
<p th:text="1+3">结果1</p>
<p th:text="9%2">结果2</p>
补充:三目运算
- If-then-else:
(if) ? (then) : (else)
- If-then:
(if) ? (then)
- Default:
(value) ? : (defaultvalue)
- 选择(星号)表达式 *{ }
- 使用方法:首先通过 th:object 获取对象,然后使用 th:xx = “*{ }” 获取对 象属性值(*表示不用写对象名)。
- 后台代码:
Student s=new Student(2019001,"小明");
model.addAttribute("stu",s);
- 前端代码:
<div th:object="${stu}">
<p th:text="*{id}"></p>
<p th:text="*{name}"></p>
</div>
- 运行结果
- 消息(#)表达式 #{ }
- 主要是用于读取自定义属性文件(.properties)中的值,常用于国际化。
(1)在 templates 目录中新建属性文件 message.properties,并写入以下内容:
home.province=Hubei
home.city=Wuhan
(2)在 application.properties 中加入属性文件所在位置:
#指定属性文件所在位置
spring.messages.basename=templates/message
(3)页面中读取配置文件:
<p th:text="#{home.province}"></p>
<p th:text="#{home.city}"></p>
- 运行结果:
- 链接表达式 @{ }
- 使用方法:通过链接表达式
@{ }
直接拿到应用路径,然后拼接静态资源路径。
th:src 用于设置图片来源
th:attr 用于设置属性
HTML原生写法:<img src="/images/苏轼.jpg">
注:先将图片资源放在 static 的 images 目录中
<img th:src="@{/images/苏轼.jpg}"/>
另一种写法:
<img th:attr="src=@{/images/苏轼.jpg}" />
补充:如果图片没有显示,需要 build 菜单 → rebuild项目
-
th:href 用于设置超链接值(http://localhost:8080/)
<a th:href="@{/}">首页</a>
-
生成的url:http://localhost:8080/test1?id=2019001&name=小明
<a th:href="@{/test1(id=${stu.id}, name=${stu.name})}">跳转</a>
-
( 变量名=值,变量名=值 ) 括起作为url参数
-
生成的url:http://localhost:8080/test5/2019001/小明
-
称为:RESTful 风格请求
<a th:href="@{/test5/{id}/{name}(id=${stu.id},name=${stu.name})}">跳转</a>
- 片段表达式 ~{ }
- 一般和模版布局语法一起使用