Spring Boot(四):Thymeleaf 使用詳解

在上篇文章Spring Boot (二):Web 綜合開發中簡單介紹了一下 Thymeleaf,這篇文章將更加全面詳細的介紹 Thymeleaf 的使用。Thymeleaf 是新一代的模板引擎,在 Spring4.0 中推薦使用 Thymeleaf 來做前端模版引擎。

Thymeleaf 介紹

簡單說,Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 JSP 。相較與其他的模板引擎,它有如下三個極吸引人的特點:

  • 1.Thymeleaf 在有網絡和無網絡的環境下皆可運行,即它可以讓美工在瀏覽器查看頁面的靜態效果,也可以讓程序員在服務器查看帶數據的動態頁面效果。這是由於它支持 html 原型,然後在 html 標籤裡增加額外的屬性來達到模板+數據的展示方式。瀏覽器解釋 html 時會忽略未定義的標籤屬性,所以 Thymeleaf 的模板可以靜態地運行;當有數據返回到頁面時,Thymeleaf 標籤會動態地替換掉靜態內容,使頁面動態顯示。
  • 2.Thymeleaf 開箱即用的特性。它提供標準和 Spring 標準兩種方言,可以直接套用模板實現 JSTL、 OGNL表達式效果,避免每天套模板、改 Jstl、改標籤的困擾。同時開發人員也可以擴展和創建自定義的方言。
  • 3.Thymeleaf 提供 Spring 標準方言和一個與 SpringMVC 完美集成的可選模塊,可以快速的實現表單綁定、屬性編輯器、國際化等功能。

標準表達式語法

它們分為四類:

  • 1.變量表達式
  • 2.選擇或星號表達式
  • 3.文字國際化表達式
  • 4.URL 表達式

變量表達式

變量表達式即 OGNL 表達式或 Spring EL 表達式(在 Spring 術語中也叫 model attributes)。如下所示:
${session.user.name}

它們將以HTML標籤的一個屬性來表示:

  

  • 選擇(星號)表達式

    選擇表達式很像變量表達式,不過它們用一個預先選擇的對象來代替上下文變量容器(map)來執行,如下:
    *{customer.name}

    被指定的 object 由 th:object 屬性定義:


    ...
    ...
    ...

    文字國際化表達式

    文字國際化表達式允許我們從一個外部文件獲取區域文字信息(.properties),用 Key 索引 Value,還可以提供一組參數(可選).

    #{main.title}  
    #{message.entrycreated(${entryId})}

    可以在模板文件中找到這樣的表達式代碼:

    <table>  
    ...
    ...
    ...
    ...
    /<table>

    URL 表達式

    URL 表達式指的是把一個有用的上下文或回話信息添加到 URL,這個過程經常被叫做 URL 重寫。
    @{/order/list}

    URL還可以設置參數:
    @{/order/details(id=${orderId})}

    相對路徑:
    @{../documents/report}

    讓我們看這些表達式:

     
    
                    
    
                


    分享到:


    相關文章: