타임리프에서는 효율적인 오브젝트 사용을 위해 기본적인 오브젝트 유틸리티를 제공하고 있다.
타임리프의 기본 제공 유틸리티 함수는 다음과 같다.
- #numbers
- #strings
- #arrays
- #lists
- #sets
- #maps
- #objects
- #bools
- #dates
- #calendars
- #uris
- #messages
- #conversions
- #aggregates
- #ids
다음 중 자주 사용하는 주요 함수만 정리하도록 하겠다.
numbers
종류 | 설명 |
${#numbers.formatInteger(num,3)} ${#numbers.arrayFormatInteger(numArray,3)} ${#numbers.listFormatInteger(numList,3)} ${#numbers.setFormatInteger(numSet,3)} |
자리수를 설정한 숫자 포맷 적용 ex) formatInteger(15, 3) → 015 |
${#numbers.formatInteger(num,3,'POINT')} ${#numbers.arrayFormatInteger(numArray,3,'POINT')} ${#numbers.listFormatInteger(numList,3,'POINT')} ${#numbers.setFormatInteger(numSet,3,'POINT')} |
숫자 포맷 적용하되 자릿수마다 구분점 표시 가능 구분자 : COMMA, POINT, WHITESPACE, NONE, DEFAULT ex) formatInteger(123123,3,'COMMA') → 123,123 |
${#numbers.formatDecimal(num,3,2)} ${#numbers.arrayFormatDecimal(numArray,3,2)} ${#numbers.listFormatDecimal(numList,3,2)} ${#numbers.setFormatDecimal(numSet,3,2)} |
자리수를 설정한 소수 포맷 적용 ex) formatDecimal(51.3, 3, 2) → 051.30 |
${#numbers.formatDecimal(num,3,2,'COMMA')} ${#numbers.arrayFormatDecimal(numArray,3,2,'COMMA')} ${#numbers.listFormatDecimal(numList,3,2,'COMMA')} ${#numbers.setFormatDecimal(numSet,3,2,'COMMA')} |
소수 포맷 적용하되 자릿수마다 구분점 표시 가능 ex) formatDecimal(123123.54, 3, 2,'COMMA') → 123,123.54 |
${#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)} |
from 부터 to 까지 연속된 index의 숫자 배열을 출력 ex) sequence(0, 5) →{0, 1, 2, 3, 4, 5} |
strings
종류 | 설명 |
${#strings.toString(obj)} | null에 안전한 toString() |
${#strings.isEmpty(name)} ${#strings.arrayIsEmpty(nameArr)} ${#strings.listIsEmpty(nameList)} ${#strings.setIsEmpty(nameSet)} |
null 또는 공백인지 체크. true, false로 리턴함. |
${#strings.defaultString(text, default)} ${#strings.arrayDefaultString(textArr, default)} ${#strings.listDefaultString(textList, default)} ${#strings.setDefaultString(textSet, default)} |
null 또는 공백일 때 default에 입력한 값으로 변경. ex) ${#strings.defaultString(text,'-')} → null이거나 공백일 경우 '-' 로 변경 |
${#strings.contains(name, 'ez')} ${#strings.containsIgnoreCase(name, 'ez')} |
문자열에 대상 문자열이 포함되어 있는지 판단. IgnoreCase는 대소문자를 무시함. true, false로 리턴함. |
${#strings.startsWith(name,'Don')} ${#strings.endsWith(name,'Don')} |
시작 문자열 또는 끝 문자열 일치 여부 확인 true, false로 리턴함. |
${#strings.indexOf(name, 'ez')} ${#strings.substring(name, 3, 5)} ${#strings.substringAfter(name, prefix)} ${#strings.substringBefore(name, suffix)} ${#strings.replace(name, 'las', 'ler')} |
대상 문자열과 일치하는 문자열의 첫 인덱스 출력 문자열을 입력한 인덱스 만큼 자르기 문자열로 찾은 후 인덱스만큼 자르기 문자열 찾은 후 전 인덱스 만큼 자르기 일치하는 문자열 지정한 문자열로 대체 |
${#strings.prepend(str,prefix)} ${#strings.append(str,suffix)} |
문자열 앞/뒤에 문자열 추가 |
${#strings.toUpperCase(name)} ${#strings.toLowerCase(name)} |
대문자로 변경 소문자로 변경 |
${#strings.arrayJoin(namesArray,',')} ${#strings.listJoin(namesList,',')} ${#strings.setJoin(namesSet,',')} ${#strings.arraySplit(namesStr,',')} ${#strings.listSplit(namesStr,',')} ${#strings.setSplit(namesStr,',')} |
특정문자열로 나누거나 문자열 사이에 특정 문자열 추가 |
${#strings.trim(str)} | 문자열의 공백 제거 |
${#strings.length(str)} | 문자열의 길이를 출력 |
${#strings.abbreviate(str,10)} | 문자열이 설정한 길이를 초과하면 ...으로 표현 |
${#strings.capitalize(str)} ${#strings.unCapitalize(str)} |
문자열의 첫 글자를 대문자/소문자로 변경 |
${#strings.capitalizeWords(str)} ${#strings.capitalizeWords(str,delimiters)} |
문자열의 각 문장의 첫 글자를 대문자/소문자로 변경 |
${#strings.escapeXml(str)} ${#strings.escapeJava(str)} ${#strings.escapeJavaScript(str)} ${#strings.unescapeJava(str)} ${#strings.unescapeJavaScript(str)} |
xml, java 등 escape/unescape |
${#strings.equals(first, second)} ${#strings.equalsIgnoreCase(first, second)} ${#strings.concat(values...)} ${#strings.concatReplaceNulls(nullValue, values...)} |
문자열이 일치하는지 체크 문자열이 일치하는지 대소문자를 무시하고 체크 |
${#strings.randomAlphanumeric(count)} | characters 타입 중 랜덤한 문자열을 count 만큼 출력 0...9 and A...Z |
arrays
종류 | 설명 |
${#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)} | 배열이 비었는지 검사. true, false 로 리턴함. |
${#arrays.contains(array, element)} ${#arrays.containsAll(array, elements)} |
배열에 해당 엘리먼트가 있는지 검사. true, false 로 리턴함. |
lists
종류 | 설명 |
${#lists.toList(object)} | 오브젝트를 리스트로 변환 |
${#lists.size(list)} | 리스트의 사이즈를 출력 |
${#lists.isEmpty(list)} | 리스트가 비었는지 검사. true, false 로 리턴함. |
${#lists.contains(list, element)} ${#lists.containsAll(list, elements)} |
리스트에 해당 엘리먼트가 있는지 검사. true, false 로 리턴함. |
${#lists.sort(list)} ${#lists.sort(list, comparator)} |
리스트를 기본 정렬 리스트를 조건에 의해 정렬 ex) reverse |
sets
종류 | 설명 |
${#sets.toSet(object)} | 오브젝트를 셋으로 변환 |
${#sets.size(set)} | 셋의 사이즈를 출력 |
${#sets.isEmpty(set)} | 셋이 비었는지 검사, true, false 로 리턴함. |
${#sets.contains(set, element)} ${#sets.containsAll(set, elements)} |
셋에 해당 엘리먼트가 있는지 검사. true, false 로 리턴함. |
maps
종류 | 설명 |
${#maps.size(map)} | 맵의 사이즈를 출력 |
${#maps.isEmpty(map)} | 맵이 비었는지 검사. true, false 로 리턴함. |
${#maps.containsKey(map, key)} ${#maps.containsAllKeys(map, keys)} ${#maps.containsValue(map, value)} ${#maps.containsAllValues(map, value)} |
맵에 해당 엘리먼트가 있는지 검사. true, false 로 리턴함. |
objects
종류 | 설명 |
${#objects.nullSafe(obj,default)} ${#objects.arrayNullSafe(objArray,default)} ${#objects.listNullSafe(objList,default)} ${#objects.setNullSafe(objSet,default)} |
해당 오브젝트가 null일 경우 default 값을 리턴함. null이 아닐경우 해당 오브젝트 리턴함. |
bools
종류 | 설명 |
${#bools.isTrue(obj)} ${#bools.arrayIsTrue(objArray)} ${#bools.listIsTrue(objList)} ${#bools.setIsTrue(objSet)} |
입력받은 오브젝트가 true로 판단되는지 여부를 출력 collection 객체의 경우 boolean 타입의 collection으로 반환. |
${#bools.isFalse(cond)} ${#bools.arrayIsFalse(condArray)} ${#bools.listIsFalse(condList)} ${#bools.setIsFalse(condSet)} |
입력받은 오브젝트가 false로 판단되는지 여부를 출력 collection 객체의 경우 boolean 타입의 collection으로 반환. |
${#bools.arrayAnd(condArray)} ${#bools.listAnd(condList)} ${#bools.setAnd(condSet)} |
입력받은 collection 객체의 모든 오브젝트에 대해 and 조건 적용. 전부 true일 경우 true를 리턴. |
${#bools.arrayOr(condArray)} ${#bools.listOr(condList)} ${#bools.setOr(condSet)} |
입력받은 collection 객체의 모든 오브젝트에 대해 or조건 적용. 하나라도 true가 아닐 경우 false 리턴. |
dates
종류 | 설명 |
${#dates.format(date)} ${#dates.arrayFormat(datesArray)} ${#dates.listFormat(datesList)} ${#dates.setFormat(datesSet)} |
입력받은 값을 standard 포맷으로 변환 |
${#dates.formatISO(date)} ${#dates.arrayFormatISO(datesArray)} ${#dates.listFormatISO(datesList)} ${#dates.setFormatISO(datesSet)} |
입력받은 값을 ISO8601 포맷으로 변환 |
${#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')} |
입력받은 값을 지정된 포맷으로 변환 ex) format(cal, 'dd/MM/yyyy HH:mm') → 21/09/2022 12:42 ex) format(cal, 'yyyy-MM-dd HH:mm:ss') → 2022-09-21 12:42:05 |
${#dates.day(date)} ${#dates.month(date)} ${#dates.monthName(date)} ${#dates.monthNameShort(date)} ${#dates.year(date)} ${#dates.dayOfWeek(date)} ${#dates.dayOfWeekName(date)} ${#dates.dayOfWeekNameShort(date)} ${#dates.hour(date)} ${#dates.minute(date)} ${#dates.second(date)} ${#dates.millisecond(date)} |
dates 객체의 특정 요소값을 출력 |
${#dates.create(year,month,day)} ${#dates.create(y,m,d,hour,minute)} ${#dates.create(y,m,d,h,m,second)} ${#dates.create(y,m,d,h,m,s,millisecond)} |
원하는 요소를 넣어서 dates 객체를 생성 |
${#dates.createNow()} ${#dates.createNowForTimeZone()} |
현재 시간으로 dates 객체 생성 |
${#dates.createToday()} ${#dates.createTodayForTimeZone()} |
오늘 날짜로 dates 객체 생성 |
calendars
종류 | 설명 |
${#calendars.format(cal)} ${#calendars.arrayFormat(calArray)} ${#calendars.listFormat(calList)} ${#calendars.setFormat(calSet)} |
입력받은 값을 standard 포맷으로 변환 |
${#calendars.formatISO(cal)} ${#calendars.arrayFormatISO(calArray)} ${#calendars.listFormatISO(calList)} ${#calendars.setFormatISO(calSet)} |
입력받은 값을 ISO8601 포맷으로 변환 |
${#calendars.format(cal, 'dd/MM/yyyy HH:mm')} ${#calendars.arrayFormat(calArray, 'dd/MM/yyyy HH:mm')} ${#calendars.listFormat(calList, 'dd/MM/yyyy HH:mm')} ${#calendars.setFormat(calSet, 'dd/MM/yyyy HH:mm')} |
입력받은 값을 지정된 포맷으로 변환 ex) format(cal, 'dd/MM/yyyy HH:mm') → 21/09/2022 12:42 ex) format(cal, 'yyyy-MM-dd HH:mm:ss') → 2022-09-21 12:42:05 |
${#calendars.day(date)} ${#calendars.month(date)} ${#calendars.monthName(date)} ${#calendars.monthNameShort(date)} ${#calendars.year(date)} ${#calendars.dayOfWeek(date)} ${#calendars.dayOfWeekName(date)} ${#calendars.dayOfWeekNameShort(date)} ${#calendars.hour(date)} ${#calendars.minute(date)} ${#calendars.second(date)} ${#calendars.millisecond(date)} |
calendars 객체의 특정 요소값을 출력 |
${#calendars.create(year,month,day)} ${#calendars.create(y,m,d,hour,minute)} ${#calendars.create(y,m,d,h,m,second)} ${#calendars.create(y,m,d,h,m,s,millisecond)} ${#calendars.createForTimeZone(year,month,day,timeZone)} ${#calendars.createForTimeZone(y,m,d,hour,minute,timeZone)} ${#calendars.createForTimeZone(y,m,d,h,m,second,timeZone)} ${#calendars.createForTimeZone(y,m,d,h,m,s,millisecond,timeZone)} |
calendars 객체를 생성. 원하는 요소를 넣을 수 있음. |
${#calendars.createNow()} ${#calendars.createNowForTimeZone()} |
현재 시간으로 calendars 객체 생성 |
${#calendars.createToday()} ${#calendars.createTodayForTimeZone()} |
오늘 날짜로 calendars 객체 생성 |
uris
종류 | 설명 |
${#uris.escapePath(uri)} ${#uris.escapePath(uri, encoding)} ${#uris.unescapePath(uri)} ${#uris.unescapePath(uri, encoding)} |
uri path를 escape/unescape |
${#uris.escapePathSegment(uri)} ${#uris.escapePathSegment(uri, encoding)} ${#uris.unescapePathSegment(uri)} ${#uris.unescapePathSegment(uri, encoding)} |
uri path segment 를 escape/unescape |
${#uris.escapeFragmentId(uri)} ${#uris.escapeFragmentId(uri, encoding)} ${#uris.unescapeFragmentId(uri)} ${#uris.unescapeFragmentId(uri, encoding)} |
uri path fragment를 escape/unescape |
${#uris.escapeQueryParam(uri)} ${#uris.escapeQueryParam(uri, encoding)} ${#uris.unescapeQueryParam(uri)} ${#uris.unescapeQueryParam(uri, encoding)} |
uri path query parameter를 escape/unescape |
Reference.
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
'Java' 카테고리의 다른 글
[Spring Batch] 한 개의 Step에 여러 개의 Processor의 다중 적용이 필요할 경우(CompositeProcessor, 예제 포함) (0) | 2023.01.18 |
---|---|
[Spring Batch]#6 스프링 배치 Item Reader (0) | 2023.01.17 |
[Spring Batch] #4 스프링 배치 Step 과 Tasklet (0) | 2022.09.27 |
[Spring Batch] #3 스프링배치 동작 방식 - 기본 (0) | 2022.09.20 |
[Spring Batch] #2 스프링 배치 Job의 실행 방법 (0) | 2022.09.20 |