Thymeleaf 表達式工具類


Thymeleaf默認提供了豐富的表達式工具類,這里列舉一些常用的工具類。

Objects工具類

1
2
3
4
5
6
7
8
/*
* 當obj不為空時,返回obj,否則返回default默認值
* 其同樣適用於數組、列表或集合
*/
${#objects.nullSafe(obj,default)}
${#objects.arrayNullSafe(objArray,default)}
${#objects.listNullSafe(objList,default)}
${#objects.setNullSafe(objSet,default)}

String工具類

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
* Null-safe toString()
*/
${#strings.toString(obj)} // 也可以是 array*、list* 或 set*
 
/*
* 檢查String是否為空(或null)。在檢查之前執行trim()操作也同樣適用於數組、列表或集合
*/
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}
 
/*
* 對字符串執行“isEmpty()”檢查, 如果為false則返回它, 如果為true則默認為另一個指定的字符串。
* 也同樣適用於數組、列表或集合
*/
${#strings.defaultString(text,default)}
${#strings.arrayDefaultString(textArr,default)}
${#strings.listDefaultString(textList,default)}
${#strings.setDefaultString(textSet,default)}
 
/*
* 檢查字符串中是否包含片段,比如 ${#strings.containsIgnoreCase(user.name,'kang')}
* 也同樣適用於數組、列表或集合
*/
${#strings.contains(name,'ez')} // 也可以是 array*、list* 或 set*
${#strings.containsIgnoreCase(name,'ez')} // 也可以是 array*、list* 或 set*
 
/*
* 檢查字符串是否以片段開始或結束
* 也同樣適用於數組、列表或集合
*/
${#strings.startsWith(name,'Don')} // 也可以是 array*、list* 或 set*
${#strings.endsWith(name,endingFragment)} // 也可以是 array*、list* 或 set*
 
/*
* 子串相關操作
* 也同樣適用於數組、列表或集合
*/
${#strings.indexOf(name,frag)} // 也可以是 array*、list* 或 set*
${#strings.substring(name,3,5)} // 也可以是 array*、list* 或 set*
${#strings.substringAfter(name,prefix)} // 也可以是 array*、list* 或 set*
${#strings.substringBefore(name,suffix)} // 也可以是 array*、list* 或 set*
${#strings.replace(name,'las','ler')} // 也可以是 array*、list* 或 set*
 
/*
* 附加和前置
* 也同樣適用於數組、列表或集合
*/
${#strings.prepend(str,prefix)} // 也可以是 array*、list* 或 set*
${#strings.append(str,suffix)} // 也可以是 array*、list* 或 set*
 
/*
* 大小寫轉換
* 也同樣適用於數組、列表或集合
*/
${#strings.toUpperCase(name)} // 也可以是 array*、list* 或 set*
${#strings.toLowerCase(name)} // 也可以是 array*、list* 或 set*
 
/*
* 拆分和拼接
*/
${#strings.arrayJoin(namesArray,',')}
${#strings.listJoin(namesList,',')}
${#strings.setJoin(namesSet,',')}
${#strings.arraySplit(namesStr,',')} // 返回String []
${#strings.listSplit(namesStr,',')} // 返回List <String>
${#strings.setSplit(namesStr,',')} // 返回Set <String>
 
/*
* Trim
* 也同樣適用於數組、列表或集合
*/
${#strings.trim(str)} // 也可以是 array*、list* 或 set*
 
/*
* 計算長度
* 也同樣適用於數組、列表或集合
*/
${#strings.length(str)} // 也可以是 array*、list* 或 set*
 
/*
* 縮寫文本, 使其最大大小為n。如果文本較大, 它將被剪輯並在末尾附加“...”
* 也同樣適用於數組、列表或集合
*/
${#strings.abbreviate(str,10)} // 也可以是 array*、list* 或 set*
 
/*
* 將第一個字符轉換為大寫(反之亦然)
*/
${#strings.capitalize(str)} // 也可以是 array*、list* 或 set*
${#strings.unCapitalize(str)} // 也可以是 array*、list* 或 set*
 
/*
* 將每個單詞的第一個字符轉換為大寫
*/
${#strings.capitalizeWords(str)} // 也可以是 array*、list* 或 set*
${#strings.capitalizeWords(str,delimiters)} // 也可以是 array*、list* 或 set*
 
/*
* 轉義字符串
*/
${#strings.escapeXml(str)} // 也可以是 array*、list* 或 set*
${#strings.escapeJava(str)} // 也可以是 array*、list* 或 set*
${#strings.escapeJavaScript(str)} // 也可以是 array*、list* 或 set*
 
${#strings.unescapeJava(str)} // 也可以是 array*、list* 或 set*
${#strings.unescapeJavaScript(str)} // 也可以是 array*、list* 或 set*
 
/*
* 空安全比較和連接
*/
${#strings.equals(first, second)}
${#strings.equalsIgnoreCase(first, second)}
${#strings.concat(values...)}
${#strings.concatReplaceNulls(nullValue, values...)}
 
/*
* 隨機數
*/
${#strings.randomAlphanumeric(count)}

Dates工具類

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
* 使用標准區域設置格式格式化日期
* 也同樣適用於數組、列表或集合
*/
${#dates.format(date)}
${#dates.arrayFormat(datesArray)}
${#dates.listFormat(datesList)}
${#dates.setFormat(datesSet)}
 
/*
* 使用ISO8601格式格式化日期
* 也同樣適用於數組、列表或集合
*/
${#dates.formatISO(date)}
${#dates.arrayFormatISO(datesArray)}
${#dates.listFormatISO(datesList)}
${#dates.setFormatISO(datesSet)}
 
/*
* 使用指定的格式格式化日期,比如 ${#dates.format(date,'yyyy-MM-dd HH:mm:ss')}
* 也同樣適用於數組、列表或集合
*/
${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}
 
/*
* 獲取日期屬性
* 也同樣適用於數組、列表或集合
*/
${#dates.day(date)} // 也可以是 arrayDay(...), listDay(...)之類的
${#dates.month(date)} // 也可以是 arrayMonth(...), listMonth(...)之類的
${#dates.monthName(date)} // 也可以是 arrayMonthName(...), listMonthName(...)之類的
${#dates.monthNameShort(date)} // 也可以是 arrayMonthNameShort(...), listMonthNameShort(...)之類的
${#dates.year(date)} // 也可以是 arrayYear(...), listYear(...)之類的
${#dates.dayOfWeek(date)} // 也可以是 arrayDayOfWeek(...), listDayOfWeek(...)之類的
${#dates.dayOfWeekName(date)} // 也可以是 arrayDayOfWeekName(...), listDayOfWeekName(...)之類的
${#dates.dayOfWeekNameShort(date)} // 也可以是 arrayDayOfWeekNameShort(...), listDayOfWeekNameShort(...)之類的
${#dates.hour(date)} // 也可以是 arrayHour(...), listHour(...)之類的
${#dates.minute(date)} // 也可以是 arrayMinute(...), listMinute(...)之類的
${#dates.second(date)} // 也可以是 arraySecond(...), listSecond(...)之類的
${#dates.millisecond(date)} // 也可以是 arrayMillisecond(...), listMillisecond(...)之類的
 
/*
* 根據year,month,day創建日期(java.util.Date)對象,比如 ${#dates.create('2008','08','08')}
*/
${#dates.create(year,month,day)}
${#dates.create(year,month,day,hour,minute)}
${#dates.create(year,month,day,hour,minute,second)}
${#dates.create(year,month,day,hour,minute,second,millisecond)}
 
/*
* 創建當前日期和時間創建日期(java.util.Date)對象,比如 ${#dates.format(#dates.createNow(),'yyyy-MM-dd HH:mm:ss')}
*/
${#dates.createNow()}
 
${#dates.createNowForTimeZone()}
 
/*
* 創建當前日期創建一個日期(java.util.Date)對象(時間設置為00:00)
*/
${#dates.createToday()}
 
${#dates.createTodayForTimeZone()}

Calendars工具類

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
* 使用標准區域設置格式格式化日歷
* 也同樣適用於數組、列表或集合
*/
${#calendars.format(cal)}
${#calendars.arrayFormat(calArray)}
${#calendars.listFormat(calList)}
${#calendars.setFormat(calSet)}
 
/*
* 使用ISO8601格式格式化日歷
* 也同樣適用於數組、列表或集合
*/
${#calendars.formatISO(cal)}
${#calendars.arrayFormatISO(calArray)}
${#calendars.listFormatISO(calList)}
${#calendars.setFormatISO(calSet)}
 
/*
* 使用指定的格式格式化日歷
* 也同樣適用於數組、列表或集合
*/
${#calendars.format(cal, 'dd/MMM/yyyy HH:mm')}
${#calendars.arrayFormat(calArray, 'dd/MMM/yyyy HH:mm')}
${#calendars.listFormat(calList, 'dd/MMM/yyyy HH:mm')}
${#calendars.setFormat(calSet, 'dd/MMM/yyyy HH:mm')}
 
/*
* 獲取日歷屬性
* 也同樣適用於數組、列表或集合
*/
${#calendars.day(date)} // 也可以是 arrayDay(...), listDay(...)之類的
${#calendars.month(date)} // 也可以是 arrayMonth(...), listMonth(...)之類的
${#calendars.monthName(date)} // 也可以是 arrayMonthName(...), listMonthName(...)之類的
${#calendars.monthNameShort(date)} // 也可以是 arrayMonthNameShort(...), listMonthNameShort(...)之類的
${#calendars.year(date)} // 也可以是 arrayYear(...), listYear(...)之類的
${#calendars.dayOfWeek(date)} // 也可以是 arrayDayOfWeek(...), listDayOfWeek(...)之類的
${#calendars.dayOfWeekName(date)} // 也可以是 arrayDayOfWeekName(...), listDayOfWeekName(...)之類的
${#calendars.dayOfWeekNameShort(date)} // 也可以是 arrayDayOfWeekNameShort(...), listDayOfWeekNameShort(...)之類的
${#calendars.hour(date)} // 也可以是 arrayHour(...), listHour(...)之類的
${#calendars.minute(date)} // 也可以是 arrayMinute(...), listMinute(...)之類的
${#calendars.second(date)} // 也可以是 arraySecond(...), listSecond(...)之類的
${#calendars.millisecond(date)} // 也可以是 arrayMillisecond(...), listMillisecond(...)之類的
 
/*
* 從其組件創建日歷(java.util.Calendar)對象
*/
${#calendars.create(year,month,day)}
${#calendars.create(year,month,day,hour,minute)}
${#calendars.create(year,month,day,hour,minute,second)}
${#calendars.create(year,month,day,hour,minute,second,millisecond)}
 
${#calendars.createForTimeZone(year,month,day,timeZone)}
${#calendars.createForTimeZone(year,month,day,hour,minute,timeZone)}
${#calendars.createForTimeZone(year,month,day,hour,minute,second,timeZone)}
${#calendars.createForTimeZone(year,month,day,hour,minute,second,millisecond,timeZone)}
 
/*
* 為當前日期和時間創建一個日歷(java.util.Calendar)對象
*/
${#calendars.createNow()}
 
${#calendars.createNowForTimeZone()}
 
/*
* 為當前日期創建日歷(java.util.Calendar)對象(時間設置為00:00)
*/
${#calendars.createToday()}
 
${#calendars.createTodayForTimeZone()}

Numbers工具類

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
* ==========================
* 格式化整數
* ==========================
*/
 
/*
* 設置最小整數位數。
* 也同樣適用於數組、列表或集合
*/
${#numbers.formatInteger(num,3)}
${#numbers.arrayFormatInteger(numArray,3)}
${#numbers.listFormatInteger(numList,3)}
${#numbers.setFormatInteger(numSet,3)}
 
 
/*
* 設置最小整數位數和千位分隔符:
* 'POINT'、'COMMA'、'WHITESPACE'、'NONE' 或 'DEFAULT'(根據本地化)。
* 也同樣適用於數組、列表或集合
*/
${#numbers.formatInteger(num,3,'POINT')}
${#numbers.arrayFormatInteger(numArray,3,'POINT')}
${#numbers.listFormatInteger(numList,3,'POINT')}
${#numbers.setFormatInteger(numSet,3,'POINT')}
 
 
/*
* ==========================
* 格式化十進制數
* ==========================
*/
 
/*
* 設置最小整數數字和(精確的)十進制數字。
* 也同樣適用於數組、列表或集合
*/
${#numbers.formatDecimal(num,3,2)}
${#numbers.arrayFormatDecimal(numArray,3,2)}
${#numbers.listFormatDecimal(numList,3,2)}
${#numbers.setFormatDecimal(numSet,3,2)}
 
/*
* 設置最小整數數字和(精確的)小數位數, 以及小數分隔符。
* 也同樣適用於數組、列表或集合
*/
${#numbers.formatDecimal(num,3,2,'COMMA')}
${#numbers.arrayFormatDecimal(numArray,3,2,'COMMA')}
${#numbers.listFormatDecimal(numList,3,2,'COMMA')}
${#numbers.setFormatDecimal(numSet,3,2,'COMMA')}
 
/*
* 設置最小整數數字和(精確的)十進制數字, 以及千位和十進制分隔符。
* 也同樣適用於數組、列表或集合
*/
${#numbers.formatDecimal(num,3,'POINT',2,'COMMA')}
${#numbers.arrayFormatDecimal(numArray,3,'POINT',2,'COMMA')}
${#numbers.listFormatDecimal(numList,3,'POINT',2,'COMMA')}
${#numbers.setFormatDecimal(numSet,3,'POINT',2,'COMMA')}
 
/*
* ==========================
* 實用方法
* ==========================
*/
 
/*
* 創建一個從x到y的整數序列(數組)
*/
${#numbers.sequence(from,to)}
${#numbers.sequence(from,to,step)}

比如:

1
2
3
4
<p th:utext="${#numbers.formatInteger(0.1024,3)}"></p>
<p th:utext="${#numbers.formatInteger(1.024,3)}"></p>
<p th:utext="${#numbers.formatInteger(10.24,3)}"></p>
<p th:utext="${#numbers.formatInteger(102.4,3)}"></p>

 

頁面輸出:

mrbird_photo_20170927145905.png

1
2
3
4
5
6
7
8
9
10
11
<p th:utext="${#numbers.formatInteger(1.024,2,'POINT')}"></p>
<p th:utext="${#numbers.formatInteger(1024,3,'POINT')}"></p>
<p th:utext="${#numbers.formatInteger(1024,10,'POINT')}"></p>
 
<p th:utext="${#numbers.formatInteger(1.024,2,'COMMA')}"></p>
<p th:utext="${#numbers.formatInteger(1024,3,'COMMA')}"></p>
<p th:utext="${#numbers.formatInteger(1024,10,'COMMA')}"></p>
 
<p th:utext="${#numbers.formatInteger(1.024,2,'WHITESPACE')}"></p>
<p th:utext="${#numbers.formatInteger(1024,3,'WHITESPACE')}"></p>
<p th:utext="${#numbers.formatInteger(1024,10,'WHITESPACE')}"></p>

頁面輸出:

mrbird_photo_20170927150746.png

POINT指的是.,COMMA指的是,,WHITESPACE指的是空格。三個數位為一組,使用指定的分隔符分割。比如1.024並不是小數,而是使用了.分隔的1024。

Booleans工具類

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
/*
* 評估條件, 類似於 th:if 標簽
* 也同樣適用於數組、列表或集合
*/
${#bools.isTrue(obj)}
${#bools.arrayIsTrue(objArray)}
${#bools.listIsTrue(objList)}
${#bools.setIsTrue(objSet)}
 
/*
* 用否定來評估條件
* 也同樣適用於數組、列表或集合
*/
${#bools.isFalse(cond)}
${#bools.arrayIsFalse(condArray)}
${#bools.listIsFalse(condList)}
${#bools.setIsFalse(condSet)}
 
/*
* 評估條件並執行與操作
* 接收數組、列表或集合作為參數
*/
${#bools.arrayAnd(condArray)}
${#bools.listAnd(condList)}
${#bools.setAnd(condSet)}
 
/*
* 評估條件並執行或操作
* 接收數組、列表或集合作為參數
*/
${#bools.arrayOr(condArray)}
${#bools.listOr(condList)}
${#bools.setOr(condSet)}

Arrays工具類

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
/*
* 轉換為數組, 試圖推斷數組組件類。注意, 如果結果數組為空, 或者目標對象的元素不是全部相同的類, 則
* 此方法將返回Object []。
*/
${#arrays.toArray(object)}
 
/*
* 轉換為指定組件類的數組。
*/
${#arrays.toStringArray(object)}
${#arrays.toIntegerArray(object)}
${#arrays.toLongArray(object)}
${#arrays.toDoubleArray(object)}
${#arrays.toFloatArray(object)}
${#arrays.toBooleanArray(object)}
 
/*
* 計算數組長度
*/
${#arrays.length(array)}
 
/*
* 檢查數組是否為空
*/
${#arrays.isEmpty(array)}
 
/*
* 檢查數組中是否包含元素或元素集合
*/
${#arrays.contains(array, element)}
${#arrays.containsAll(array, elements)}

Lists工具類

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
/*
* 轉化為 list
*/
${#lists.toList(object)}
 
/*
* 計算大小
*/
${#lists.size(list)}
 
/*
*/
${#lists.isEmpty(list)}
 
/*
* 檢查list中是否包含元素或元素集合
*/
${#lists.contains(list, element)}
${#lists.containsAll(list, elements)}
 
/*
* 排序給定列表的副本。列表的成員必須
* 實現comparable, 或者必須定義comparator。
*/
${#lists.sort(list)}
${#lists.sort(list, comparator)}

Sets工具類

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
* 轉化為 to set
*/
${#sets.toSet(object)}
 
/*
* 計算大小
*/
${#sets.size(set)}
 
/*
* 檢查set是否為empty
*/
${#sets.isEmpty(set)}
 
/*
* 檢查set中是否包含元素或元素集合
*/
${#sets.contains(set, element)}
${#sets.containsAll(set, elements)}

Maps工具類

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* 計算大小
*/
${#maps.size(map)}
 
/*
* 檢查map是否為空
*/
${#maps.isEmpty(map)}
 
/*
* 檢查map中是否包含key/s或value/s
*/
${#maps.containsKey(map, key)}
${#maps.containsAllKeys(map, keys)}
${#maps.containsValue(map, value)}
${#maps.containsAllValues(map, value)}

注意事項

值得注意的是,在使用工具類對某個表達式進行處理時候,你可能會寫成:

1
${#strings.isEmpty(${session.user.name})}。

 

實際上這種寫法是錯誤的,將拋出異常。正確的寫法為:

1
${#strings.isEmpty(session.user.name)}。


免責聲明!

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



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