Thymeleaf表達(dá)式語法以及日期格式化(轉(zhuǎn))

https://blog.csdn.net/m0_38043362/article/details/78064177





Thymeleaf表達(dá)式語法以及日期格式化

2017年09月22日 16:18:47?試水流連?閱讀數(shù):10693

?版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載命锄。https://blog.csdn.net/m0_38043362/article/details/78064177

簡單表達(dá)式 (simple expressions)

${...}? 變量表達(dá)式

*{...}? 選擇變量表達(dá)式

#{...}? 消息表達(dá)式

@{...}? 鏈接url表達(dá)式

1

2

3

4

5

6

7

字面量

Text literals: 'one text' , 'Another one!' ,…文本

Number literals: 0 , 34 , 3.0 , 12.3 ,…數(shù)字

Boolean literals: true , false布爾

Null literal: null空

Literal tokens: one , sometext , main ,…文本字符

1

2

3

4

5

6

7

8

9

文本操作

字符串連接

|The name is ${name}| 字符串連接

算術(shù)運(yùn)算

+ , - , * , / , %? 二元運(yùn)算符

-? 負(fù)號(一元運(yùn)算符)

1

2

3

布爾操作

and,or 二元操作符

!,not 非(一元操作符)

關(guān)系操作符

, < , >= , <= (gt , lt , ge , le) 比大小

== , != (eq, ne) 比等值

條件判斷

(if) ? (then)? ? ? if-then

(if) ? (then) : (else)? if-then-else?

1

2

3

<!-- 條件判斷 -->

1

2

3

4

條件表達(dá)式中的三個部分自身也可以是表達(dá)式,也可以是變量(${...}, *{...}),

消息(#{...}), URL (@{...}) 或字面量 ('...')

條件表達(dá)式也可以使用括號來嵌套:

1

2

3

<!-- 條件判斷 -->

1

2

3

else表達(dá)式也可以省略,當(dāng)條件為false時廓旬,會返回null:

1

<!-- 條件判斷 -->

1

2

3

(value) ?: (defaultvalue)? Default

只有第一個返回null時第二個表達(dá)式才會運(yùn)算

1

2

表達(dá)式內(nèi)置工具對象

#dates 與java.util.Date對象的方法對應(yīng),格式化哥艇、日期組件抽取等等#calendars 類似#dates,與java.util.Calendar對象對應(yīng)#numbers格式化數(shù)字對象的工具方法#strings 與java.lang.String對應(yīng)的工具方法:contains僻澎、startsWith貌踏、prepending/appending等等#objects 用于對象的工具方法#bools 用于布爾運(yùn)算的工具方法#arrays 用于數(shù)組的工具方法#lists 用于列表的工具方法#sets 用于set的工具方法#maps 用于map的工具方法#aggregates 用于創(chuàng)建數(shù)組或集合的聚合的工具方法#messages 用于在變量表達(dá)式內(nèi)部獲取外化消息的工具方法,與#{…}語法獲取的方式相同#ids 用于處理可能重復(fù)出現(xiàn)(例如窟勃,作為遍歷的結(jié)果)的id屬性的工具方法

1

2

3

4

5

6

7

8

9

10

11

12

13

表達(dá)式內(nèi)置基本對象

#ctx : the context object.

#vars: the context variables.

#locale : the context locale.

#request : (only in Web Contexts) the HttpServletRequest object.

(在web環(huán)境下才可用)

#response : (only in Web Contexts) the HttpServletResponse object.

(在web環(huán)境下才可用)

#session : (only in Web Contexts) the HttpSession object.

(在web環(huán)境下才可用)

#servletContext : (only in Web Contexts) the ServletContext object.

(在web環(huán)境下才可用)

1

2

3

4

5

6

7

8

9

10

11

12

選擇表達(dá)式(*{xx})

<!-- 選擇表達(dá)式 --><!-- 等同于 -->

1

2

3

4

5

6

url連接@{…}

使用這種方式的好處就是可以自動將()內(nèi)的中文參數(shù)自動進(jìn)行URL編碼

<!-- URL --><!-- href="/demo/page?param=%E6%B5%8B%E8%AF%95%E7%94%A8%E6%88%B7%EF%BC%81" -->demo page<!-- href="/" -->demo page<!-- href="/demo/page?param=%E6%B5%8B%E8%AF%95%E7%94%A8%E6%88%B7%EF%BC%81" -->demo page

1

2

3

4

5

6

7

變量表達(dá)式

變量表達(dá)式可以解析OGNL語法祖乳。詳盡的語法信息可以訪問官網(wǎng):?

http://commons.apache.org/ognl/

字面值替換

<!--

替換字面值

<p th:text="|Welcome to our application, ${custUser.nickname}!|">你好</p>

等同于

<p th:text="'Welcome to our application, ' + ${custUser.nickname} + '!'">你好</p>

-->你好

1

2

3

4

5

6

7

數(shù)字運(yùn)算

<!-- 數(shù)字運(yùn)算 -->

1

2

message表達(dá)式#{..}

從配置文件中取配置的信息?

可以通過該表達(dá)式,實(shí)現(xiàn)國際化信息

<!-- 國際化秉氧,將submit按鈕的message從messages_zh_CN.properties(默認(rèn))中獲取 -->

1

2

3

4

5

6

7

屬性設(shè)置

th:attr 為萬能屬性設(shè)置眷昆,內(nèi)容為key value 形式多個屬性用,號分隔

1

2

3

4

5

6

指定單個屬性

1

2

支持的屬性?

參見官方文檔

屬性介紹

<!--

追加屬性 和 前置追加

email is :12222222@xx.com

12222222@xx.com is email.

--><!-- 數(shù)據(jù)回顯時汁咏,使用這個方法來選擇 -->123

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

循環(huán)

可以處理如下對象的遍歷?

java.util.Iterable?

java.util.Enumeration?

java.util.Iterator?

java.util.Map?

any array

<!-- 循環(huán)標(biāo)簽 -->NAMEPRICEIN STOCK

? ? ? ? +'? '+ elementStat.count +'? '+ elementStat.size

? ? ? ? +'? '+ elementStat.current +'? '+ elementStat.even

? ? ? ? +'? '+ elementStat.odd +'? '+ elementStat.first

? ? ? ? +'? '+ elementStat.last}">OnionsNAMEPRICEIN STOCK

? ? ? ? +'? '+ iterStat.count +'? '+ iterStat.size

? ? ? ? +'? '+ iterStat.current +'? '+ iterStat.even

? ? ? ? +'? '+ iterStat.odd +'? '+ iterStat.first

? ? ? ? +'? '+ iterStat.last}">Onions<!--

? ? ? ? th:if 條件判斷亚斋,相當(dāng)于if(!(xx==xx)){}

? ? ? ? th:unless 與th:if正好相反

? ? ? ? -->角標(biāo)不為1角標(biāo)為1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

循環(huán)的狀態(tài)屬性 默認(rèn)從element+Stat取值 或者自己制定 前綴+Stat?

index 角標(biāo)從0開始?

count 從1開始?

size 集合大小?

current 當(dāng)前元素?

even/odd 奇偶?

first(boolean)?

last(boolean)

switch語句

<!-- switch標(biāo)簽 -->User is an administratorhello my text!default

1

2

3

4

5

6

7

使用th:case=”*” 相當(dāng)于default:

swich(x){case1:break;case2:break;default:}

1

2

3

4

5

6

7

8

Fragments片段表達(dá)式~{…} 3.0以后的版本支持

1.~{templatename::selector}

可以利用此功能方便地將重復(fù)的片段抽取出來

如footer header

1

2

3

4

<!-- 代碼片段定義在fragment.html中 --><!-- <div th:fragment="copy">

? ? ? 2011 The Good Thymes Virtual Grocery

</div> --><!-- 代碼片段使用其他頁面均可使用該表達(dá)式引入 --><!-- 替換掉當(dāng)前外層div標(biāo)簽 --><!-- 這么寫也可以 -->

1

2

3

4

5

6

7

8

9

10

11

12

2.~{templatename}

包含指定模板中所有內(nèi)容

3.~{::selector}" or "~{this::selector}"

自己頁面內(nèi)的模板可以省略掉模板名稱

1

2

3

4

5

以上的表達(dá)式都支持在selector中支持支持的所有表達(dá)式

1

也可以不使用 th:fragment來定義片段

? 2011 The Good Thymes Virtual Grocery

1

2

3

4

5

可以指定參數(shù)的Fragments片段

<!-- 指定參數(shù)的片段 --><!-- <div th:fragment="frag (onevar,twovar)">

<p th:text="${onevar} + ' - ' + ${twovar}">...</p>

</div> -->

1

2

3

4

5

6

7

Fragments片段支持嵌套

<!-- 指定要嵌套的片段 --><!-- 片段嵌套 -->

no operation

<!-- 片段嵌套 --><!-- 不指定參數(shù) -->

1

2

3

4

5

6

7

8

9

10

11

12

這種不能放到一個頁面里,否則會解析不到${otherfrag}

也可以使用表達(dá)式判斷條件決定是否引入

定義局部變量

<!-- 定義局部變量 -->

The name of the first person isJulius Caesar.

1

2

3

4

5

6

行內(nèi)表達(dá)式

<!-- 行內(nèi)表達(dá)式 -->

今日陽光明媚攘滩,[[${custUser.nickname}]]

<!-- 與下面的等價 -->

今日陽光明媚帅刊,

1

2

3

4

格式化日期等${{user.lastAccessDate}}

...

1

使用${{xxx}}該表達(dá)式,解析器會根據(jù)符合 xxx類型–>String的轉(zhuǎn)換器漂问,進(jìn)行轉(zhuǎn)換?

例如:

@ConfigurationpublicclassThymeleafConfigextendsWebMvcConfigurerAdapterimplementsApplicationContextAware{....@OverridepublicvoidaddFormatters(finalFormatterRegistry registry) {super.addFormatters(registry);? ? ? ? ? registry.addFormatter(dateFormatter());? ? ? }@BeanpublicDateFormatterdateFormatter() {returnnewMyDateFormatter();? ? ? }? ? ? class MyDateFormatter extends DateFormatter{@OverridepublicStringprint(Date date, Locale locale) {returnnewSimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);? ? ? ? }? ? ? }}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赖瞒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蚤假,更是在濱河造成了極大的恐慌栏饮,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磷仰,死亡現(xiàn)場離奇詭異袍嬉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芒划,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門冬竟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欧穴,“玉大人,你說我怎么就攤上這事泵殴′塘保” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵笑诅,是天一觀的道長调缨。 經(jīng)常有香客問我,道長吆你,這世上最難降的妖魔是什么弦叶? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮妇多,結(jié)果婚禮上伤哺,老公的妹妹穿的比我還像新娘。我一直安慰自己者祖,他們只是感情好立莉,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著七问,像睡著了一般蜓耻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上械巡,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天刹淌,我揣著相機(jī)與錄音,去河邊找鬼讥耗。 笑死有勾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的葛账。 我是一名探鬼主播柠衅,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼籍琳!你這毒婦竟也來了菲宴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤趋急,失蹤者是張志新(化名)和其女友劉穎喝峦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呜达,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谣蠢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眉踱。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡挤忙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谈喳,到底是詐尸還是另有隱情册烈,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布婿禽,位于F島的核電站赏僧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扭倾。R本人自食惡果不足惜淀零,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膛壹。 院中可真熱鬧蛙紫,春花似錦换衬、人聲如沸须鼎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撬槽。三九已至,卻和暖如春趾撵,著一層夾襖步出監(jiān)牢的瞬間侄柔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工占调, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暂题,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓究珊,卻偏偏與公主長得像薪者,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子剿涮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,836評論 0 38
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,350評論 0 10
  • 天黑了言津。 A君不免有些失落:天黑了就什么都看不到了。 B君回道:仔細(xì)看取试,夜空中還有閃閃星河悬槽。
    Gordon_38e6閱讀 121評論 0 0
  • 今天繼續(xù)分享【得到】App付費(fèi)專欄,李笑來《通往財(cái)富自由之路》第20周的內(nèi)容——《如何認(rèn)知磅叛、選擇屑咳、培養(yǎng)正確的剛需》...
    注冊營養(yǎng)師阿娟閱讀 869評論 2 2
  • 最近發(fā)現(xiàn)了一個好網(wǎng)站:超新學(xué)術(shù)視頻。里面有很多有用的專業(yè)視頻可以學(xué)習(xí)弊琴,我打算利用坐輕軌的時間來看這些資料兆龙,而不是在...
    倒立的筆桿閱讀 245評論 3 5