본문 바로가기
Java

[Thymeleaf] 타임리프 유틸 함수 - #strings, #arrays 등등

by Jayson Jeong 2022. 10. 5.

타임리프에서는 효율적인 오브젝트 사용을 위해 기본적인 오브젝트 유틸리티를 제공하고 있다. 

타임리프의 기본 제공 유틸리티 함수는 다음과 같다.

  • #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