thymeleaf在工做中遇到的問題及解決辦法(四)

一、關於字符串拼接的問題

        字符串拼接可使用以下方式。html

<a href="#" th:text="第+${StartNo}+頁 +'    '+共+${countPage}+頁">

        還有一種更優雅的方式,使用「||」減小了字符串的拼接,代碼以下。java

<a href="#" th:text="|第${StartNo}頁     共${countPage}頁|">

二、關於URL表達式中傳參的問題

        這個問題也比較常遇到,好比想經過超連接刪除數據庫中某條數據,那麼在超連接上就須要傳入此數據的主鍵。如圖,我要修改此用戶那麼就要在修改的超連接上把10064這個ID傳進來。算法

超連接傳參代碼以下,須要注意Thymeleaf對URL進行渲染,務必使用th:href,th:src屬性 。數據庫

<a class="border-main" th:href="@{userPower(id=${user.Id})}"><span class="edit"></span> 修改

幾點須要說明:app

  • 上例URL最後的(id=${user.Id})表示將括號內的內容做爲URL參數處理,該語法避免使用字符串拼接,大大提升了可讀性。
  • @{userPower}是Context相關的相對路徑,在渲染時會自動添加上當前Web應用的Context名字,假設Context名字爲Java,那麼結果應該是/Java/userPower。

三、關於條件判斷的補充

      前面介紹了if的用法,接下來介紹一個與if用法相同但表達相反的屬性 th:unless ,二者都是條件判斷,if表示表達式成立則執行動做,而unless表示表達式中的條件不成立,纔會執行動做。less

      thymeleaf還有一種相似Java中的三元運算符的用法,代碼以下。dom

<input th:text="(${user.isAdmin}?'管理員':'普通用戶')"></input>

四、關於特殊字符的轉義

  • 比較: > , < , >= , <= ( gt , lt , ge , le )
  • 相等算法: == , != ( eq , ne )

五、關於一些其餘的經常使用內置對象

Controller代碼:工具

@RestController
public class IndexController {

    @PostMapping("toIndex")
    public String toIndex(Model model) {
        List<String> datas = new ArrayList<String>();
        datas.add("二十歲之後");
        datas.add("995600491");
        model.addAttribute("datas", datas);
        model.addAttribute("curDate", new Date());
        model.addAttribute("number", Math.random()*100);
        return "index";
    }
}

上面的代碼,包含了工做中常使用的數據類型,有集合,時間類型,數值類型,下面咱們使用thymeleaf的內置對象來解析他們。spa

  • 使用#lists.size來獲取List的長度。
<span th:text="${#lists.size(datas)}"></span>
  • 對於日期的格式化,與java中的SimpleDateFormat相似,第一個參數是後臺傳來的key,第二個參數是設置日期的格式
<span th:text="${#dates.format(curDate, 'yyyy-MM-dd HH:mm:ss')}"></span>
  • 對於數值,咱們能夠對其這樣操做。
<span th:text="${#numbers.formatDecimal(number, 0, 3)}"></span>

   解釋:保留三位小數, 整數位自動。code

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

  解釋: 保留1位小數位,3位整數位(不夠的前面加0) 。

特別提示:

內置對象前都須要加#號。

內置對象通常都以s結尾。

其餘經常使用內置對象:

#numbers: 數字格式化;

#strings:字符串格式化,參照java.lang.String;

#bools:判斷boolean類型;

#lists:集合操做的工具,參照java.util.List;

#sets:Set集合操做工具,參照java.util.Set;

#maps:Map集合操做工具,參照java.util.Map; 

#dates:日期格式化,參照java.util.Date;
相關文章
相關標籤/搜索