Thymeleaf的標準表達式

一、標準變量表達式

  • 語法:${…}
  • 變量表達式用於訪問容器(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>(項目的上下文會被自動添加)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章