#execInfo:模版引擎信息
${#execInfo.templateName} //leaf 模版引擎名称
${#execInfo.templateMode} //leaf 模版引擎模式,默认:html${#execInfo.processedTemplateName} //root 模板引擎名称
${#execInfo.processedTemplateMode} //root 模版引擎模式${#execInfo.templateNames} //返回 root 到 leaf 模板引擎名称
${#execInfo.templateModes} //返回 root 到 leaf 模板引擎模式${#execInfo.templateStack} //返回 root 到 leaf 模板引擎名称、模式
#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')} //读取国际化信息,没有则返回null
${#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:uri / url 操作
${#uris.escapePath(uri)}
${#uris.escapePath(uri, encoding)}
${#uris.unescapePath(uri)}
${#uris.unescapePath(uri, encoding)}${#uris.escapePathSegment(uri)}
${#uris.escapePathSegment(uri, encoding)}
${#uris.unescapePathSegment(uri)}
${#uris.unescapePathSegment(uri, encoding)}${#uris.escapeFragmentId(uri)}
${#uris.escapeFragmentId(uri, encoding)}
${#uris.unescapeFragmentId(uri)}
${#uris.unescapeFragmentId(uri, encoding)}${#uris.escapeQueryParam(uri)}
${#uris.escapeQueryParam(uri, encoding)}
${#uris.unescapeQueryParam(uri)}
${#uris.unescapeQueryParam(uri, encoding)}
#conversions:转换操作
${#conversions.convert(object, 'java.util.TimeZone')}
${#conversions.convert(object, targetClass)}
#dates:日期操作(java.util.Date)
${#dates.format(date)} //格式化
${#dates.arrayFormat(datesArray)}
${#dates.listFormat(datesList)}
${#dates.setFormat(datesSet)}${#dates.formatISO(date)} //使用ISO8601格式化
${#dates.arrayFormatISO(datesArray)}
${#dates.listFormatISO(datesList)}
${#dates.setFormatISO(datesSet)}${#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)} // 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.********
创建日期${#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)}${#dates.createNow()} //创建当前时间
${#dates.createNowForTimeZone()}${#dates.createToday()} //创建当前时间,时间设置:00:00
${#dates.createTodayForTimeZone()}
#calendars:日期操作(java.util.Calendar)
${#calendars.format(cal)} //格式化日期
${#calendars.arrayFormat(calArray)}
${#calendars.listFormat(calList)}
${#calendars.setFormat(calSet)}${#calendars.formatISO(cal)} //使用ISO8601格式化日期
${#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)} // 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.***********
创建日期${#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)}${#calendars.createNow()} //创建当前日期时间
${#calendars.createNowForTimeZone()}${#calendars.createToday()} //创建当前日期时间,时间设置为:00:00
${#calendars.createTodayForTimeZone()}
#numbers:数字操作
${#numbers.formatInteger(num,3)} //设置最小位数
${#numbers.arrayFormatInteger(numArray,3)}
${#numbers.listFormatInteger(numList,3)}
${#numbers.setFormatInteger(numSet,3)}${#numbers.formatInteger(num,3,'POINT')} //设置最小位数,指定分隔符(POINT、COMMA、WHITESPACE、NONE、DEFAULT)
${#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')}${#numbers.formatCurrency(num)} //格式化货币
${#numbers.arrayFormatCurrency(numArray)}
${#numbers.listFormatCurrency(numList)}
${#numbers.setFormatCurrency(numSet)}${#numbers.formatPercent(num)} //格式化分数
${#numbers.arrayFormatPercent(numArray)}
${#numbers.listFormatPercent(numList)}
${#numbers.setFormatPercent(numSet)}${#numbers.formatPercent(num, 3, 2)} //格式化分数,指定整数位数、小数位数
${#numbers.arrayFormatPercent(numArray, 3, 2)}
${#numbers.listFormatPercent(numList, 3, 2)}
${#numbers.setFormatPercent(numSet, 3, 2)}${#numbers.sequence(from,to)} //创建整数序列
${#numbers.sequence(from,to,step)} //创建整数序列,间隔为step
#strings:字符串操作
${#strings.toString(obj)} // also array*, list* and set*${#strings.isEmpty(name)} //检查是否为空
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}${#strings.defaultString(text,default)} //字符串非空返回字符串,否则返回default
${#strings.arrayDefaultString(textArr,default)}
${#strings.listDefaultString(textList,default)}
${#strings.setDefaultString(textSet,default)}${#strings.contains(name,'ez')} // also array*, list* and set*
${#strings.containsIgnoreCase(name,'ez')} // also array*, list* and set*${#strings.startsWith(name,'Don')} // also array*, list* and set*
${#strings.endsWith(name,endingFragment)} // also array*, list* and set*${#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*${#strings.prepend(str,prefix)} // also array*, list* and set*
${#strings.append(str,suffix)} // also array*, list* and set*${#strings.toUpperCase(name)} // also array*, list* and set*
${#strings.toLowerCase(name)} // also array*, list* and set*${#strings.arrayJoin(namesArray,',')}
${#strings.listJoin(namesList,',')}
${#strings.setJoin(namesSet,',')}
${#strings.arraySplit(namesStr,',')} // returns String[]
${#strings.listSplit(namesStr,',')} // returns List
${#strings.setSplit(namesStr,',')} // returns Set
${#strings.length(str)} // also array*, list* and set*
${#strings.abbreviate(str,10)} // 缩略为10个字符,also array*, list* and set*${#strings.capitalize(str)} // 首字母大写,also array*, list* and set*
${#strings.unCapitalize(str)} // also array*, list* and set*${#strings.capitalizeWords(str)} // 每个word首字母大小写,also array*, list* and set*
${#strings.capitalizeWords(str,delimiters)} // also array*, list* and set*${#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*${#strings.equals(first, second)}
${#strings.equalsIgnoreCase(first, second)}
${#strings.concat(values...)}
${#strings.concatReplaceNulls(nullValue, values...)}${#strings.randomAlphanumeric(count)}
#objects:object 操作
${#objects.nullSafe(obj,default)} //非空返回原值,否则返回default
${#objects.arrayNullSafe(objArray,default)}
${#objects.listNullSafe(objList,default)}
${#objects.setNullSafe(objSet,default)}
#bools:bool 操作
${#bools.isTrue(obj)} //是否为true,判断同 th:if
${#bools.arrayIsTrue(objArray)}
${#bools.listIsTrue(objList)}
${#bools.setIsTrue(objSet)}${#bools.isFalse(cond)} //是否为false
${#bools.arrayIsFalse(condArray)}
${#bools.listIsFalse(condList)}
${#bools.setIsFalse(condSet)}${#bools.arrayAnd(condArray)} //使用 and操作符 判断array是否为true
${#bools.listAnd(condList)}
${#bools.setAnd(condSet)}${#bools.arrayOr(condArray)} //使用 or操作符 判断array是否为true
${#bools.listOr(condList)}
${#bools.setOr(condSet)}
#arrays:array 操作
${#arrays.toArray(object)} //转换为数组${#arrays.toStringArray(object)} //转换为string数组
${#arrays.toIntegerArray(object)} //转换为integer数组
${#arrays.toLongArray(object)} //转换为long数组
${#arrays.toDoubleArray(object)} //转换为double数组
${#arrays.toFloatArray(object)} //转换为float数组
${#arrays.toBooleanArray(object)} //转换为booleab数组${#arrays.length(array)} //数组长度
${#arrays.isEmpty(array)} //数组是否为空${#arrays.contains(array, element)} //数组是否含有元素 element
${#arrays.containsAll(array, elements)} //数组是否含有元素集合 elements
#lists:list 操作
${#lists.toList(object)} //转换为list
${#lists.size(list)} //list 元素个数
${#lists.isEmpty(list)} //list 是否为空${#lists.contains(list, element)} //是否含有元素
${#lists.containsAll(list, elements)}${#lists.sort(list)}
${#lists.sort(list, comparator)} //排序,指定排序方式Comparator
#sets:set 操作
${#sets.toSet(object)} //转换为 set
${#sets.size(set)} //set 元素个数
${#sets.isEmpty(set)} //set 是否为空${#sets.contains(set, element)} //set 是否含有元素element
${#sets.containsAll(set, elements)} //set 是否含有元素集合elements
#maps:map 操作
${#maps.size(map)} //map元素个数
${#maps.isEmpty(map)} //map是否为空${#maps.containsKey(map, key)} //是否含有key
${#maps.containsAllKeys(map, keys)}
${#maps.containsValue(map, value)} //是否含有value
${#maps.containsAllValues(map, value)}
#aggregates:聚合操作
${#aggregates.sum(array)} //计算总和
${#aggregates.sum(collection)} ${#aggregates.avg(array)} //计算平均值
${#aggregates.avg(collection)}
#ids:id 操作
${#ids.seq('someId')} //th:id 中使用,添加计数器${#ids.next('someId')} //th:id 中使用,下一个值
${#ids.prev('someId')} //th:id 中使用,前一个值