一、標準變量表達式
- 語法:${…}
- 變量表達式用於訪問容器(tomcat)上下文環境中的變量,功能和JSTL中的${}相同;
- Thymeleaf中的變量表達式使用${變量名}的方式獲取其中的數量,比如在Spring mvc的controller中使用model.addAttribute向前端傳輸數據,代碼如下:
@RequestMapping(value="/userinfo")
public String userinfo(Model model ){
User user = new User();
user.setId(1);
user.setNick("喬巴");
user.setPhone("13020320320");
user.setAddress("新世界");
model.addAttribute("user",user);
model.addAttribute("hello","helloworld");
return "user";//返回user.html
}
前端接收代碼:
<span th:text="${user.nick}">x</span>
<span th:text="${user.phone}">137xxxxxxx</span>
<span th:text="${user.email}">[email protected]</span>
<span th:text="${user.address}">藍海</span>
<span th:text="${hello}">你好</span>
- 其中,th:text=""是Thymeleaf的一個屬性,用於文本的顯示
二、選擇變量表達式 - 語法:*{…}
- 選擇變量表達式,也叫星號變量表達式,使用th:object屬性來綁定對象,比如:
@RequestMapping(value="/userinfo")
public String userinfo(Model model ){
User user = new User();
user.setId(1);
user.setNick("喬巴");
user.setPhone("13020320320");
user.setAddress("新世界");
model.addAttribute("user",user);
model.addAttribute("hello","helloworld");
return "user";//返回user.html
}
前端接收代碼:
<div th:object="${user}">
<p>nick:<span th:text="*{nick}">張</span></p>
<p>nick:<span th:text="*{phone}">21313xxxx</span></p>
<p>nick:<span th:text="*{email}">1231@com</span></p>
<p>nick:<span th:text="*{address}">北京</span></p>
</div>
- 選擇表達式首先使用th:object來綁定後臺傳來的User對象,然後使用*來代表這個對象,後面{}中的值是此對象中的屬性;
- 選擇變量表達式*{…}是另一種類似於變量表達式${…}表示變量的方法;
- 選擇變量表達式在執行時是在選擇的對象上求解,而${…}是在上下文的變量model上求解;
- 通過th:object屬性指明選擇變量表達式的求解對象;
上述代碼等價於:
<div>
<p>nick:<span th:text="${user.nick}">張</span></p>
<p>nick:<span th:text="${user.phone}">21313xxxx</span></p>
<p>nick:<span th:text="${user.email}">1231@com</span></p>
<p>nick:<span th:text="${user.address}">北京</span></p>
</div>
標準標量表達式和選擇變量表達式可以混合一起使用,比如:
<div th:object="${user}">
<p>nick:<span th:text="*{nick}">張</span></p>
<p>nick:<span th:text="${user.phone}">21313xxxx</span></p>
<p>nick:<span th:text="${user.email}">1231@com</span></p>
<p>nick:<span th:text="*{address}">北京</span></p>
</div>
也可以不使用th:object進行對象的選擇,而直接使用*{…}獲取數據,比如:
<div>
<p>nick:<span th:text="*{user.nick}">張</span></p>
<p>nick:<span th:text="*{user.phone}">21313xxxx</span></p>
<p>nick:<span th:text="*{user.email}">1231@com</span></p>
<p>nick:<span th:text="*{user.address}">北京</span></p>
</div>
三、URL表達式
- 語法:@{…}`
URL表達式可用於<script src="...">、<link href="...">、<a href="...">等
- 絕對URL,比如:
<a href="info.html" th:href="@{'http://localhost:8080/boot/user/info?id='+$
{user.id}}">查看</a>
- 相對URL,相對於頁面,比如:
<a href="info.html" th:href="@{'user/info?id='+${user.id}}">查看</a>
- 相對URL,相對於項目上下文,比如:
<a href="info.html" th:href="@{'/user/info?id='+${user.id}}">查看</a>(項目的上下文會被自動添加)