如標題所述,這篇文章主要講述Thymeleaf中的內置對象(list解析、日期格式化、數字格式化等)、定義變量、獲取URL的參數和在頁面標簽中自定義屬性的應用。
如果對Thymeleaf的基本使用、maven依賴等不清楚的可以先閱讀我的另一篇文章《Thymeleaf 之 初步使用》。
Controller部份@Controller
public?class?IndexController?{
@GetMapping(value?=?"index")
public?String?index(Model?model,?HttpServletRequest?request)?{
List?datas?=?new?ArrayList();
datas.add("Form1");
datas.add("http://www.form1.cn");
datas.add("393156105");
model.addAttribute("datas",?datas);
model.addAttribute("curDate",?new?Date());
model.addAttribute("money",?Math.random()*100);
return?"index";
}
}
在這個控制器的Model中存放了這樣幾個數據:一個String類型的列表、一個日期對象和一個數值,這些東西在實際應用開發過程中應用非常廣泛,下面具體看一下在Thymeleaf中是如何解析這些數據的。
日期格式化
說明: 使用內置對象dates的format函數即可對日期進行格式化,在format函數中,第一個參數是日期對象,對二兩個參數為日期格式(規則跟SimpleDateFormat一樣)
需要注意的是:·?內置對象一般都以s結尾,如dates、lists、numbers等
·?在使用內置對象是在對象名前都需要加#號。
數字格式化
說明: 此示例表示保留兩位小數位,整數位自動;
說明: 此示例表示保留兩位小數位,3位整數位(不夠的前加0)
獲取列表長度
說明: 使用#lists.size來獲取List的長度。
獲取URL參數值
說明: 當訪問http://localhost:1105/index?page=5時頁面將會得到page對應的值:5。
定義變量
當前頁碼:
說明: 同樣,當訪問http://localhost:8888/index?page=5時,頁面將顯示:當前頁碼:5,說明用th:with來定義變量,多個用,號隔開,使用范圍在當前標簽內。
自定義標簽屬性
在Thymeleaf中可以使用th:加上標簽的任何屬性進行賦值,但有些時候會遇到自定義的屬性,再用th:加自定義的屬性則會無效。比如:需要對標簽增加objName和objId這樣的屬性,在非Thymeleaf情況下是這樣:
變量情況是:
在Thymeleaf下則是:
說明: 在頁面上查看源代碼可以看到:,說明自定義屬性用:th:attr,多個屬性用,隔開。
thymeleaf對于checked屬性的判斷對于屬性是有些特定值的,比如checked屬性,thymeleaf都采用bool值,比如th:checked=${user.isActive}
這里,user.isActive=false時應該checked是不會出現這個attr的。
總的來說thymeleaf是不錯的,但內聯不是太好用,經常js的alert的時候,不得不把后半個括號換一行,如alert("aaa"?+?/*[[#{message}]]*/'message');
這種情況,會把后面的);都刪掉所以只能寫成
alert("aaa"?+?/*[[#{message}]]*/'message'
);
內置對象
上面簡單描述了比較常用的dates、lists、numbers這幾個內置對象,在Thymeleaf還有很多的內置對象,像strings也非常常用,用法跟Java.lang.String類的用法一樣。
在Thymeleaf中的內置對象有:
#dates:日期格式化內置對象,具體方法可以參照java.util.Date;
#calendars:類似于#dates,但是是java.util.Calendar類的方法;
#numbers: 數字格式化;
#strings:字符串格式化,具體方法可以參照java.lang.String,如startsWith、contains等;
#objects:參照java.lang.Object;
#bools:判斷boolean類型的工具;
#arrays:數組操作的工具;
#lists:列表操作的工具,參照java.util.List;
#sets:Set操作工具,參照java.util.Set;
#maps:Map操作工具,參照java.util.Map;
#aggregates:操作數組或集合的工具;
#messages:操作消息的工具。