1. 程式人生 > >5分鐘瞭解Thymeleaf的標準方言(Standard dialects)

5分鐘瞭解Thymeleaf的標準方言(Standard dialects)

這篇指南將介紹Thymeleaf模板技術的標準方言(Standard dialects)和Spring標準方言(SpringStandard dialects)的一些重要概念。不能替代更加詳盡的教程,不過可以給你足夠的技術體驗。

標準方言(Standard dialects)

Thymeleaf的可擴充套件性很強,它支援自定義你自己的模板屬性集(或事件標籤)、表示式、語法及應用邏輯,它更像一個模板引擎框架。

然而,秉著“開箱即用”的原則,Thymeleaf提供了滿足大多數情況下的預設實現-標準方言(Standard and SpringStandard dialects)。你可以在模板中識別出這些被使用的標準方言,因為他們都以th屬性開頭,如

<span th:text="...">

值得注意的是,Standard和SpringStandard方言的用法幾乎相同,但是SpringStandard包括了Spring MVC整合的具體特徵(比如用Spring Expression Language來替代OGNL)。

標準表示式語法(Standard Expression syntax)

大部分Thymeleaf屬性允許它們的值被設定成或包含到表示式中,我們稱之為標準表示式, 它們分為四類: 1.變量表達式 2.選擇或星號表示式 3.文字國際化表示式 4.URL表示式

變量表達式

變量表達式即OGNL表示式或Spring EL表示式(在Spring術語中也叫model attributes)。如下所示:
${session.user.name}
它們將以HTML標籤的一個屬性來表示:
<span th:text="${book.author.name}">
<li th:each="book : ${books}">

選擇(星號)表示式

選擇表示式很像變量表達式,不過它們用一個預先選擇的物件來代替上下文變數容器(map)來執行,如下:
*{customer.name}
被指定的object由th:object屬性定義:
<div th:object="${book}">
  ...
  <span th:text="*{title}">...</span>
  ...
</div>

文字國際化表示式

文字國際化表示式允許我們從一個外部檔案獲取區域文字資訊(.properties),用Key索引Value,還可以提供一組引數(可選).
#{main.title}
#{message.entrycreated(${entryId})}
可以在模板檔案中找到這樣的表示式程式碼:
<table>
  ...
  <th th:text="#{header.address.city}">...</th>
  <th th:text="#{header.address.country}">...</th>
  ...
</table>

URL表示式

URL表示式指的是把一個有用的上下文或回話資訊新增到URL,這個過程經常被叫做URL重寫。
@{/order/list}
URLs還可以設定引數:
@{/order/details(id=${orderId})}
相對路徑:
@{../documents/report}
讓我們看這些表示式:
<form th:action="@{/createOrder}">

<a href="main.html" th:href="@{/main}">

字面量和操作

Thymeleaf有一組可用的字面量和操作。
  • Literals:
    • Text literals: 'one text''Another one!',…
    • Number literals: 0343.012.3,…
    • Boolean literals: truefalse
    • Null literal: null
    • Literal tokens: onesometextmain,…
  • Text operations:
    • String concatenation: +
    • Literal substitutions: |The name is ${name}|
  • Arithmetic operations:
    • Binary operators: +-*/%
    • Minus sign (unary operator): -
  • Boolean operations:
    • Binary operators: andor
    • Boolean negation (unary operator): !not
  • Comparisons and equality:
    • Comparators: ><>=<= (gtltgele)
    • Equality operators: ==!= (eqne)
  • Conditional operators:
    • If-then: (if) ? (then)
    • If-then-else: (if) ? (then) : (else)
    • Default: (value) ?: (defaultvalue)

表示式預處理

最後要講到的是表示式預處理,它被定義在_之間:
#{selection.__${sel.code}__}
我們看到的變量表達式${sel.code}將先被執行,加入結果是"ALL",那麼_之間的值"ALL"將被看做表示式的一部分被執行,在這裡會變成selection.ALL。

一些基本屬性

讓我們看一組最基本的標準方言屬性,以th:text開頭,替換標籤中的文字內容(這裡再次強調THymeleaf的原型支援能力)。
<p th:text="#{msg.welcome}">Welcome everyone!</p>

th:each將迴圈array或list中的元素並重復列印一組標籤。
<li th:each="book : ${books}" th:text="${book.title}">En las Orillas del Sar</li>

最後,Thymeleaf有很多th屬性來定義XHTML或者HTML5屬性,這些屬性只是執行表示式並把值設定成HTML的屬性值:
<form th:action="@{/createOrder}">
<input type="button" th:value="#{form.submit}" />
<a th:href="@{/admin/users}">


想了解更多?







相關推薦

5分鐘瞭解Thymeleaf標準方言(Standard dialects)

這篇指南將介紹Thymeleaf模板技術的標準方言(Standard dialects)和Spring標準方言(SpringStandard dialects)的一些重要概念。不能替代更加詳盡的教程,不過可以給你足夠的技術體驗。 標準方言(Standard dialect

5分鐘瞭解赴港上市公司CEO薪酬

2018年韋萊韜悅中國內地赴香港上市公司高管薪酬、股權激勵和公司治理研究報告涵蓋中國內地赴香港上市公司共計713家,其中包括H股、紅籌股、以及2017年均市值規模在15億港幣以上的內地赴香港上市中資公司。 港股中國上市公司業績穩步上升,整體淨利潤增長率達到17% 20

5分鐘瞭解swagger

版權宣告:本文為RyuGou原創文章,未經博主允許不得轉載。    https://blog.csdn.net/i6448038/article/details/77622977 隨著網際網路技術的發展,現在的網站架構基本都由原來的後端渲染,變成了:前端渲染、先後端分離的

5分鐘瞭解Arcgis繪製地圖的方法步驟

【使用繪圖模板更高效的繪圖】:按著上述步驟對圖層設定了專題符號後,我們可以把每一類符號變成一個繪圖模板,該模板類似於一個繪圖工具,按照該模板繪製的要素就自動擁有了符號對應的屬性值和圖形樣式,這樣可以省去一邊繪圖,一邊還要輸屬性的繁瑣。

5分鐘瞭解lucene

本文通俗地介紹了Lucene全文檢索的內容及工作原理,以及索引的結構,旨在讓以前未了解過Lucene的讀者在能在短時間內對Lucene有簡單認知,未介紹具體程式碼,讀完本文可知道Lucene是什麼,有哪些具體應用,我們一直說的索引是什麼。       &

5分鐘瞭解Mockito

一、什麼是mock測試,什麼是mock物件? 先來看看下面這個示例: 從上圖可以看出如果我們要對A進行測試,那麼就要先把整個依賴樹構建出來,也就是BCDE的例項。 一種替代方案就是使用mocks 從圖中可以清晰的看出 mock物件就是在除錯期間用來作為真實物件的替代

5分鐘瞭解阿里時序時空資料庫

簡介 時序時空資料庫(Time Series & Spatial Temporal Database,簡稱 TSDB)

好程式設計師Java學習路線分享5分鐘瞭解基數排序

  好程式設計師Java學習路線分享5分鐘瞭解基數排序,前言:基數排序無需進行比較和交換,而是利用分配和收集兩種基本操作實現排序。

5分鐘瞭解Prometheus

Prometheus(譯:普羅米修斯)用領先的開源監控解決方案為你的指標和警報提供動力(賦能)。   1.  概述 1.1.  Prometheus是什麼? Prometheus是一個開源的系統監控和警報工具包。自2012年啟動以來,許多公司和組織都採用了Prome

5分鐘讓你瞭解 ZooKeeper 的功能和原理

目錄    一 .Zookeeper功能簡介    二 . ZooKeeper基本概念      2.1  叢集角色      2.2 叢集節點分工      2.3  session      2.4 資料節點      2.5

DevOps是什麼?5分鐘帶你瞭解DevOps

DevOps是什麼?5分鐘帶你瞭解DevOps by:karlin999的CSDN部落格 DevOps(英文Development和Operations的組合)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。它的出現是由

設計模式23種全解析(5分鐘徹底瞭解23種設計模式)

一、設計模式的分類 總體來說設計模式分為三大類: 建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 行為型模式,共十一種:策略模式、模板

獲得PCC效能大賽背後的RocksDB引擎:5分鐘全面瞭解其原理

1、介紹 RocksDB 專案最開始是在 Facebook 作為一個試驗專案開發的高效的資料庫軟體,可以實現在伺服器負載下快速儲存(特別是快閃記憶體儲存)的資料儲存的全部潛力。它是一個 C++ 庫,可以用於儲存 KV,包括任意大小的位元組流。它支援原子讀寫。 R

Python的5種傳參姿勢,花兩分鐘瞭解一下

位置實參 實參和形參的位置是關聯對應的。一個實參對應一個相應位置的形參。   關鍵字實參 實參以 key=value 的形式傳遞,因為已經指明瞭將 value 傳給哪個引數,所以位置順序就無關緊要了。 預設值 可以給形參指定預設值,當沒有提供實參的時候,

比特幣 = 區塊鏈?5 分鐘讓你真正瞭解區塊鏈

近期,Facebook 旗下全球加密貨幣專案 Libra 官方網站正式上線併發布白皮書。一家世界級的網際網路巨頭不僅採納了區塊鏈技術,而且還發了幣,影響不言而喻。甚至有人認為,這是繼 2009 年比特幣、2013 年以太坊以來,數字貨幣領域最重要的一份白皮書。 這是不是表示真正的區塊鏈風口就要來了呢? 很多朋

5分鐘快速瞭解MySQL索引的各種型別

>文章持續更新,微信搜尋「**萬貓學社**」第一時間閱讀。 >關注後回覆「**電子書**」,免費獲取12本Java必讀技術書籍。 ### 什麼是索引? 索引是資料庫儲存引擎用於快速查詢到指定資料的一種資料結構。 可以用新華字典做類比:如果新華字典中對每個字的詳細解釋是資料庫中表的記錄,那麼按部首或拼音等

鏡像的分層結構 - 每天5分鐘玩轉容器技術(11)

數據 9.png upload 問題: 所有 rfi image tle acs Docker 支持通過擴展現有鏡像,創建新的鏡像。 實際上,Docker Hub 中 99% 的鏡像都是通過在 base 鏡像中安裝和配置需要的軟件構建出來的。比如我們現在構建一個新的鏡像,

web 實現5分鐘 鼠標鍵盤無操作,自動退出登陸

function settings 鼠標鍵盤 events <html> <head> <script type="text/javascript"> function ScreenSaver(settings){ this.settings

5分鐘帶你學習瀏覽器8大數據存儲技術

clas 上大 獲取 message logs 發送請求 我們 不兼容 class 瀏覽器的緩存機制 HTTP文件緩存、LocalStorage、 sessionStorage、cookie、indexDB、webSQL 、CatheStorage、Applicatio