具体如下:(一般使用形式th:if="${#execInfo.templateName}"、th:value="${#execInfo.templateName}")
Execution Info
Execution Info
#execInfo:提供有关在Thymeleaf标准表达式内正在处理的模板的信息。
/*
* =======================================================
* See javadoc API for class org.thymeleaf.expression.ExecutionInfo
* =======================================================
*/
${#execInfo.templateName}
${#execInfo.templateMode}
${#execInfo.processedTemplateName}
${#execInfo.processedTemplateMode}
${#execInfo.templateNames}
${#execInfo.templateModes}
${#execInfo.templateStack}
Messages
#messages:用于在变量表达式中获取外部化消息的工具方法,与使用#{...}语法获得的方式相同。
/*
* =======================================================
* See javadoc API for class org.thymeleaf.expression.Messages
* =======================================================
*/
${#messages.msg('msgKey')}
${#messages.msg('msgKey', param1)}
${#messages.msg('msgKey', param1, param2)}
${#messages.msg('msgKey', param1, param2, param3)}
${#messages.msgWithParams('msgKey', new Object[] {param1,
param2, param3, param4})}
${#messages.arrayMsg(messageKeyArray)}
${#messages.listMsg(messageKeyList)}
${#messages.setMsg(messageKeySet)}
${#messages.msgOrNull('msgKey')}
${#messages.msgOrNull('msgKey', param1)}
${#messages.msgOrNull('msgKey', param1, param2)}
${#messages.msgOrNull('msgKey', param1, param2, param3)}
${#messages.msgOrNullWithParams('msgKey', new Object[] {param1, param2, param3,param4})}
${#messages.arrayMsgOrNull(messageKeyArray)}
${#messages.listMsgOrNull(messageKeyList)}
${#messages.setMsgOrNull(messageKeySet)}
URIs/URLs
#uris:用于在Thymeleaf标准表达式中执行URI/URL操作(尤其是转义/取消转义)的工具对象。
/*
* =======================================================
* See javadoc API for class org.thymeleaf.expression.Uris
* =======================================================
*/
${#uris.escapePath(uri)}
${#uris.escapePath(uri, encoding)}
${#uris.unescapePath(uri)}
${#uris.unescapePath(uri, encoding)}
/*
* Escape/Unescape as a URI/URL path segment (between '/' symbols)
*/
${#uris.escapePathSegment(uri)}
${#uris.escapePathSegment(uri, encoding)}
${#uris.unescapePathSegment(uri)}
${#uris.unescapePathSegment(uri, encoding)}
/*
* Escape/Unescape as a Fragment Identifier (#frag)
*/
${#uris.escapeFragmentId(uri)}
${#uris.escapeFragmentId(uri, encoding)}
${#uris.unescapeFragmentId(uri)}
${#uris.unescapeFragmentId(uri, encoding)}
/*
* Escape/Unescape as a Query Parameter (?var=value)
*/
${#uris.escapeQueryParam(uri)}
${#uris.escapeQueryParam(uri, encoding)}
${#uris.unescapeQueryParam(uri)}
${#uris.unescapeQueryParam(uri, encoding)}
Conversions
#conversions:允许在模板任意位置执行转换服务的实用程序对象:
/*
* =======================================================
* See javadoc API for class org.thymeleaf.expression.Conversions
* =======================================================
*/
/*
* Execute the desired conversion of the 'object' value into the
* specified class.
*/
${#conversions.convert(object, 'java.util.TimeZone')}
${#conversions.convert(object, targetClass)}
Dates
Dates
#dates:java.util.Date对象的实用程序方法:
/*
* =======================================================
* See javadoc API for class org.thymeleaf.expression.Dates
* =======================================================
*/
/*
* Format date with the standard locale format Also works with arrays,lists or sets
*/
${#dates.format(date)}
${#dates.arrayFormat(datesArray)}
${#dates.listFormat(datesList)}
${#dates.setFormat(datesSet)}
/*
* Format date with the ISO8601 format Also works with arrays, lists or sets
*/
${#dates.formatISO(date)}
${#dates.arrayFormatISO(datesArray)}
${#dates.listFormatISO(datesList)}
${#dates.setFormatISO(datesSet)}
/*
* Format date with the specified pattern Also works with arrays, lists or sets
*/
${#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')}
/*
* Obtain date properties Also works with arrays, lists or sets
*/
${#dates.day(date)} // also arrayDay(...), listDay(...), etc.
${#dates.month(date)} // also arrayMonth(...), listMonth(...), etc.
${#dates.monthName(date)} // also arrayMonthName(...), listMonthName(...), etc.
${#dates.monthNameShort(date)}//also arrayMonthNameShort(..),listMonthNameShort(..),etc.
${#dates.year(date)} // also arrayYear(...), listYear(...), etc.
${#dates.dayOfWeek(date)} // also arrayDayOfWeek(...), listDayOfWeek(...), etc.
${#dates.dayOfWeekName(date)}// also arrayDayOfWeekName(..),listDayOfWeekName(..), etc.
${#dates.dayOfWeekNameShort(date)}
//also arrayDayOfWeekNameShort(...), listDayOfWeekNameShort(...), etc.
${#dates.hour(date)} // also arrayHour(...), listHour(...), etc.
${#dates.minute(date)} // also arrayMinute(...), listMinute(...), etc.
${#dates.second(date)} // also arraySecond(...), listSecond(...), etc.
${#dates.millisecond(date)} // also arrayMillisecond(...), listMillisecond(...), etc.
/*
* Create date (java.util.Date) objects from its components
*/
${#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)}
/*
* Create a date (java.util.Date) object for the current date and time
*/
${#dates.createNow()}
${#dates.createNowForTimeZone()}
/*
* Create a date (java.util.Date) object for the current date (time set to 00:00)
*/
${#dates.createToday()}
${#dates.createTodayForTimeZone()}
Calendars
#calendars:类似于#dates,但对于java.util.Calendar对象:
/*
* =======================================================
* See javadoc API for class org.thymeleaf.expression.Calendars
* =======================================================
*/
/*
* Format calendar with the standard locale format Also works with arrays,lists or sets
*/
${#calendars.format(cal)}
${#calendars.arrayFormat(calArray)}
${#calendars.listFormat(calList)}
${#calendars.setFormat(calSet)}
/*
* Format calendar with the ISO8601 format Also works with arrays, lists or sets
*/
${#calendars.formatISO(cal)}
${#calendars.arrayFormatISO(calArray)}
${#calendars.listFormatISO(calList)}
${#calendars.setFormatISO(calSet)}
/*
* Format calendar with the specified pattern Also works with arrays, lists or sets
*/
${#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')}
/*
* Obtain calendar properties Also works with arrays,lists or sets
*/
${#calendars.day(date)} //also arrayDay(...), listDay(...), etc.
${#calendars.month(date)} //also arrayMonth(...), listMonth(...), etc.
${#calendars.monthName(date)}// also arrayMonthName(...), listMonthName(...), etc.
${#calendars.monthNameShort(date)}
//also arrayMonthNameShort(..), listMonthNameShort(..),etc.
${#calendars.year(date)} //also arrayYear(...), listYear(...), etc.
${#calendars.dayOfWeek(date)}//also arrayDayOfWeek(...), listDayOfWeek(...), etc.
${#calendars.dayOfWeekName(date)}
// also arrayDayOfWeekName(...), listDayOfWeekName(...), etc.
${#calendars.dayOfWeekNameShort(date)}
// also arrayDayOfWeekNameShort(...), listDayOfWeekNameShort(...), etc.
${#calendars.hour(date)} // also arrayHour(...), listHour(...), etc.
${#calendars.minute(date)} // also arrayMinute(...), listMinute(...), etc.
${#calendars.second(date)} // also arraySecond(...), listSecond(...), etc.
${#calendars.millisecond(date)} // also arrayMillisecond(...),listMillisecond(...), etc.
/*
* Create calendar (java.util.Calendar) objects from its components
*/
${#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)}
/*
* Create a calendar (java.util.Calendar) object for the current date and time
*/
${#calendars.createNow()}
${#calendars.createNowForTimeZone()}
/*
* Create a calendar(java.util.Calendar) object for the current date (time set to 00:00)
*/
${#calendars.createToday()}
${#calendars.createTodayForTimeZone()}
Numbers
#numbers:数字对象的实用程序方法:
/*
* =======================================================
* See javadoc API for class org.thymeleaf.expression.Numbers
* =======================================================
*/
/*
* Set minimum integer digits. Also works with arrays, lists or sets
*/
${#numbers.formatInteger(num,3)}
${#numbers.arrayFormatInteger(numArray,3)}
${#numbers.listFormatInteger(numList,3)}
${#numbers.setFormatInteger(numSet,3)}
/*
* Set minimum integer digits and thousands separator:
* 'POINT', 'COMMA', 'WHITESPACE', 'NONE' or 'DEFAULT' (by
locale).
* Also works with arrays, lists or sets
*/
${#numbers.formatInteger(num,3,'POINT')}
${#numbers.arrayFormatInteger(numArray,3,'POINT')}
${#numbers.listFormatInteger(numList,3,'POINT')}
${#numbers.setFormatInteger(numSet,3,'POINT')}
/*
* ==========================
* Formatting decimal numbers
* ==========================
*/
/*
* Set minimum integer digits and (exact) decimal digits.
* Also works with arrays, lists or sets
*/
${#numbers.formatDecimal(num,3,2)}
${#numbers.arrayFormatDecimal(numArray,3,2)}
${#numbers.listFormatDecimal(numList,3,2)}
${#numbers.setFormatDecimal(numSet,3,2)}
/*
19.附录B:⼯具类对象表达式
216 * Set minimum integer digits and (exact) decimal digits,
and also decimal separator.
* Also works with arrays, lists or sets
*/
${#numbers.formatDecimal(num,3,2,'COMMA')}
${#numbers.arrayFormatDecimal(numArray,3,2,'COMMA')}
${#numbers.listFormatDecimal(numList,3,2,'COMMA')}
${#numbers.setFormatDecimal(numSet,3,2,'COMMA')}
/*
* Set minimum integer digits and (exact) decimal digits,
and also thousands and
* decimal separator.
* Also works with arrays, lists or sets
*/
${#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')}
/*
* =====================
* Formatting currencies
* =====================
*/
${#numbers.formatCurrency(num)}
${#numbers.arrayFormatCurrency(numArray)}
${#numbers.listFormatCurrency(numList)}
${#numbers.setFormatCurrency(numSet)}
19.附录B:⼯具类对象表达式
217/*
* ======================
* Formatting percentages
* ======================
*/
${#numbers.formatPercent(num)}
${#numbers.arrayFormatPercent(numArray)}
${#numbers.listFormatPercent(numList)}
${#numbers.setFormatPercent(numSet)}
/*
* Set minimum integer digits and (exact) decimal digits.
*/
${#numbers.formatPercent(num, 3, 2)}
${#numbers.arrayFormatPercent(numArray, 3, 2)}
${#numbers.listFormatPercent(numList, 3, 2)}
${#numbers.setFormatPercent(numSet, 3, 2)}
/*
* ===============
* Utility methods
* ===============
*/
/*
19.附录B:⼯具类对象表达式
218 * Create a sequence (array) of integer numbers going
* from x to y
*/
${#numbers.sequence(from,to)}
${#numbers.sequence(from,to,step)}
Strings
#strings String⼯具类
/*
* ====================================================
==================
* See javadoc API for class org.thymeleaf.expression.S
trings
* ====================================================
==================
*/
/*
* Null-safe toString()
*/
${#strings.toString(obj)} //
also array*, list* and set*
/*
* Check whether a String is empty (or null). Performs
a trim() operation before check
* Also works with arrays, lists or sets
*/
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
19.附录B:⼯具类对象表达式
219${#strings.setIsEmpty(nameSet)}
/*
* Perform an 'isEmpty()' check on a string and return
it if false, defaulting to
* another specified string if true.
* Also works with arrays, lists or sets
*/
${#strings.defaultString(text,default)}
${#strings.arrayDefaultString(textArr,default)}
${#strings.listDefaultString(textList,default)}
${#strings.setDefaultString(textSet,default)}
/*
* Check whether a fragment is contained in a String
* Also works with arrays, lists or sets
*/
${#strings.contains(name,'ez')} //
also array*, list* and set*
${#strings.containsIgnoreCase(name,'ez')} //
also array*, list* and set*
/*
* Check whether a String starts or ends with a fragmen
t
* Also works with arrays, lists or sets
*/
${#strings.startsWith(name,'Don')} //
also array*, list* and set*
${#strings.endsWith(name,endingFragment)} //
also array*, list* and set*
/*
* Substring-related operations
* Also works with arrays, lists or sets
*/
19.附录B:⼯具类对象表达式
220${#strings.indexOf(name,frag)} //
also array*, list* and set*
${#strings.substring(name,3,5)} //
also array*, list* and set*
${#strings.substringAfter(name,prefix)} //
also array*, list* and set*
${#strings.substringBefore(name,suffix)} //
also array*, list* and set*
${#strings.replace(name,'las','ler')} //
also array*, list* and set*
/*
* Append and prepend
* Also works with arrays, lists or sets
*/
${#strings.prepend(str,prefix)} //
also array*, list* and set*
${#strings.append(str,suffix)} //
also array*, list* and set*
/*
* Change case
* Also works with arrays, lists or sets
*/
${#strings.toUpperCase(name)} //
also array*, list* and set*
${#strings.toLowerCase(name)} //
also array*, list* and set*
/*
* Split and join
*/
${#strings.arrayJoin(namesArray,',')}
${#strings.listJoin(namesList,',')}
${#strings.setJoin(namesSet,',')}
${#strings.arraySplit(namesStr,',')} //
19.附录B:⼯具类对象表达式
221returns String[]
${#strings.listSplit(namesStr,',')} //
returns List<String>
${#strings.setSplit(namesStr,',')} //
returns Set<String>
/*
* Trim
* Also works with arrays, lists or sets
*/
${#strings.trim(str)} //
also array*, list* and set*
/*
* Compute length
* Also works with arrays, lists or sets
*/
${#strings.length(str)} //
also array*, list* and set*
/*
* Abbreviate text making it have a maximum size of n.
If text is bigger, it
* will be clipped and finished in "..."
* Also works with arrays, lists or sets
*/
${#strings.abbreviate(str,10)} //
also array*, list* and set*
/*
* Convert the first character to upper-case (and vice-
versa)
*/
${#strings.capitalize(str)} //
also array*, list* and set*
${#strings.unCapitalize(str)} //
19.附录B:⼯具类对象表达式
222also array*, list* and set*
/*
* Convert the first character of every word to upper-c
ase
*/
${#strings.capitalizeWords(str)} //
also array*, list* and set*
${#strings.capitalizeWords(str,delimiters)} //
also array*, list* and set*
/*
* Escape the string
*/
${#strings.escapeXml(str)} //
also array*, list* and set*
${#strings.escapeJava(str)} //
also array*, list* and set*
${#strings.escapeJavaScript(str)} //
also array*, list* and set*
${#strings.unescapeJava(str)} //
also array*, list* and set*
${#strings.unescapeJavaScript(str)} //
also array*, list* and set*
/*
* Null-safe comparison and concatenation
*/
${#strings.equals(first, second)}
${#strings.equalsIgnoreCase(first, second)}
${#strings.concat(values...)}
${#strings.concatReplaceNulls(nullValue, values...)}
/*
* Random
*/
19.附录B:⼯具类对象表达式
223${#strings.randomAlphanumeric(count)}
Objects
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.Obje
cts
* =======================================================
===============
*/
/*
* Return obj if it is not null, and default otherwise
* Also works with arrays, lists or sets
*/
${#objects.nullSafe(obj,default)}
${#objects.arrayNullSafe(objArray,default)}
${#objects.listNullSafe(objList,default)}
${#objects.setNullSafe(objSet,default)}
Booleans
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.Bool
s
* =======================================================
19.附录B:⼯具类对象表达式
224===============
*/
/*
* Evaluate a condition in the same way that it would be e
valuated in a th:if tag
* (see conditional evaluation chapter afterwards).
* Also works with arrays, lists or sets
*/
${#bools.isTrue(obj)}
${#bools.arrayIsTrue(objArray)}
${#bools.listIsTrue(objList)}
${#bools.setIsTrue(objSet)}
/*
* Evaluate with negation
* Also works with arrays, lists or sets
*/
${#bools.isFalse(cond)}
${#bools.arrayIsFalse(condArray)}
${#bools.listIsFalse(condList)}
${#bools.setIsFalse(condSet)}
/*
* Evaluate and apply AND operator
* Receive an array, a list or a set as parameter
*/
${#bools.arrayAnd(condArray)}
${#bools.listAnd(condList)}
${#bools.setAnd(condSet)}
/*
* Evaluate and apply OR operator
* Receive an array, a list or a set as parameter
*/
${#bools.arrayOr(condArray)}
19.附录B:⼯具类对象表达式
225${#bools.listOr(condList)}
${#bools.setOr(condSet)}
Arrays
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.Arra
ys
* =======================================================
===============
*/
/*
* Converts to array, trying to infer array component clas
s.
* Note that if resulting array is empty, or if the elemen
ts
* of the target object are not all of the same class,
* this method will return Object[].
*/
${#arrays.toArray(object)}
/*
* Convert to arrays of the specified component class.
*/
${#arrays.toStringArray(object)}
${#arrays.toIntegerArray(object)}
${#arrays.toLongArray(object)}
${#arrays.toDoubleArray(object)}
${#arrays.toFloatArray(object)}
${#arrays.toBooleanArray(object)}
19.附录B:⼯具类对象表达式
226/*
* Compute length
*/
${#arrays.length(array)}
/*
* Check whether array is empty
*/
${#arrays.isEmpty(array)}
/*
* Check if element or elements are contained in array
*/
${#arrays.contains(array, element)}
${#arrays.containsAll(array, elements)}
Lists
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.List
s
* =======================================================
===============
*/
/*
* Converts to list
*/
${#lists.toList(object)}
19.附录B:⼯具类对象表达式
227/*
* Compute size
*/
${#lists.size(list)}
/*
* Check whether list is empty
*/
${#lists.isEmpty(list)}
/*
* Check if element or elements are contained in list
*/
${#lists.contains(list, element)}
${#lists.containsAll(list, elements)}
/*
* Sort a copy of the given list. The members of the list
must implement
* comparable or you must define a comparator.
*/
${#lists.sort(list)}
${#lists.sort(list, comparator)}
Sets
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.Sets
* =======================================================
===============
*/
19.附录B:⼯具类对象表达式
228/*
* Converts to set
*/
${#sets.toSet(object)}
/*
* Compute size
*/
${#sets.size(set)}
/*
* Check whether set is empty
*/
${#sets.isEmpty(set)}
/*
* Check if element or elements are contained in set
*/
${#sets.contains(set, element)}
${#sets.containsAll(set, elements)}
Maps
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.Maps
* =======================================================
===============
*/
/*
19.附录B:⼯具类对象表达式
229 * Compute size
*/
${#maps.size(map)}
/*
* Check whether map is empty
*/
${#maps.isEmpty(map)}
/*
* Check if key/s or value/s are contained in maps
*/
${#maps.containsKey(map, key)}
${#maps.containsAllKeys(map, keys)}
${#maps.containsValue(map, value)}
${#maps.containsAllValues(map, value)}
聚合函数
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.Aggr
egates
* =======================================================
===============
*/
/*
* Compute sum. Returns null if array or collection is emp
ty
*/
${#aggregates.sum(array)}
19.附录B:⼯具类对象表达式
230${#aggregates.sum(collection)}
/*
* Compute average. Returns null if array or collection is
empty
*/
${#aggregates.avg(array)}
${#aggregates.avg(collection)}
IDs
#ids:处理可能重复的id属性的实⽤⽅法(例如,作为迭代的结
果)。
/*
* =======================================================
===============
* See javadoc API for class org.thymeleaf.expression.Ids
* =======================================================
===============
*/
/*
* Normally used in th:id attributes, for appending a coun
ter to the id attribute value
* so that it remains unique even when involved in an iter
ation process.
*/
${#ids.seq('someId')}
/*
* Normally used in th:for attributes in <label> tags, so
that these labels can refer to Ids
19.附录B:⼯具类对象表达式
231 * generated by means if the #ids.seq(...) function.
*
* Depending on whether the <label> goes before or after t
he element with the #ids.seq(...)
* function, the "next" (label goes before "seq") or the "
prev" function (label goes after
* "seq") function should be called.
*/
${#ids.next('someId')}
${#ids.prev('someId')}
19.附录B:⼯具类对象表达式