Thymeleaf 之 內置對象、定義變量、URL參數及標簽自定義屬性


Thymeleaf 之 內置對象、定義變量、URL參數及標簽自定義屬性

本文章來自【知識林】

如標題所述,這篇文章主要講述Thymeleaf中的內置對象(list解析、日期格式化、數字格式化等)、定義變量、獲取URL的參數和在頁面標簽中自定義屬性的應用。

如果對Thymeleaf的基本使用、maven依賴等不清楚的可以先閱讀我的另一篇文章《Thymeleaf 之 初步使用》

  • Controller部份
@Controller public class IndexController { @GetMapping(value = "index") public String index(Model model, HttpServletRequest request) { List<String> datas = new ArrayList<String>(); datas.add("知識林"); datas.add("http://www.zslin.com"); datas.add("393156105"); model.addAttribute("datas", datas); model.addAttribute("curDate", new Date()); model.addAttribute("money", Math.random()*100); return "index"; } } 

在這個控制器的Model中存放了這樣幾個數據:一個String類型的列表、一個日期對象和一個數值,這些東西在實際應用開發過程中應用非常廣泛,下面具體看一下在Thymeleaf中是如何解析這些數據的。

  • 日期格式化
<span th:text="${#dates.format(curDate, 'yyyy-MM-dd HH:mm:ss')}"></span> 

說明: 使用內置對象datesformat函數即可對日期進行格式化,在format函數中,第一個參數是日期對象,對二兩個參數為日期格式(規則跟SimpleDateFormat一樣)

需要注意的是:

· 內置對象一般都以s結尾,如dateslistsnumbers

· 在使用內置對象是在對象名前都需要加#號。

  • 數字格式化
<span th:text="${#numbers.formatDecimal(money, 0, 2)}"></span> 

說明: 此示例表示保留兩位小數位,整數位自動;

<span th:text="${#numbers.formatDecimal(money, 3, 2)}"></span> 

說明: 此示例表示保留兩位小數位,3位整數位(不夠的前加0)

  • 獲取列表長度
<span th:text="${#lists.size(datas)}"></span> 

說明: 使用#lists.size來獲取List的長度。

  • 獲取URL參數值
<span th:text="${#httpServletRequest.getParameter('page')}"></span> 

說明: 當訪問http://localhost:1105/index?page=5時頁面將會得到page對應的值:5

  • 定義變量
<div th:with="curPage=${#httpServletRequest.getParameter('page')}"> <h3>當前頁碼:<span th:text="${curPage}"></span></h3> </div> 

說明: 同樣,當訪問http://localhost:1105/index?page=5時,頁面將顯示:當前頁碼:5,說明用th:with來定義變量,多個用,號隔開,使用范圍在當前標簽內。

  • 自定義標簽屬性

Thymeleaf中可以使用th:加上標簽的任何屬性進行賦值,但有些時候會遇到自定義的屬性,再用th:加自定義的屬性則會無效。比如:需要對<span>標簽增加objNameobjId這樣的屬性,在非Thymeleaf情況下是這樣:

<span objId="1" objName="知識林"></span> 

變量情況是:

<span objId="${obj.id}" objName="${obj.name}"></span> 

Thymeleaf下則是:

<span th:attr="myDate=${#dates.format(curDate, 'yyyy-mm-dd')}, myMoney=${money}"></span> 

說明: 在頁面上查看源代碼可以看到:<span myMoney="91.6059494319957" myDate="2016-31-02"></span>,說明自定義屬性用:th:attr,多個屬性用,隔開。

  • 內置對象

上面簡單描述了比較常用的dateslistsnumbers這幾個內置對象,在Thymeleaf還有很多的內置對象,像strings也非常常用,用法跟java.lang.String類的用法一樣。

Thymeleaf中的內置對象有:

#dates:日期格式化內置對象,具體方法可以參照java.util.Date

#calendars:類似於#dates,但是是java.util.Calendar類的方法;

#numbers: 數字格式化;

#strings:字符串格式化,具體方法可以參照java.lang.String,如startsWithcontains等;

#objects:參照java.lang.Object

#bools:判斷boolean類型的工具;

#arrays:數組操作的工具;

#lists:列表操作的工具,參照java.util.List

#sets:Set操作工具,參照java.util.Set

#maps:Map操作工具,參照java.util.Map

#aggregates:操作數組或集合的工具;

#messages:操作消息的工具。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM