본문 바로가기
Thymeleaf

[Thymeleaf] 타임리프 주요 기능 유틸리티 - Utility Objects(Strings, Numbers, Objects, Arrays, Lists, Maps, Messages, Dates, Calendars)

by 무사뎀벨레 2022. 8. 12.

 

아래 링크와 같이 이전에는 타임리프 정의와 사용방법에 기본적인 기능들을 간단히 설명하였지만, 이번 글에서 주요 유틸리티를 안내합니다.

 

[Thymeleaf] 정의와 사용방법

Thymeleaf의 정의와 사용하는 방법에 대해서 포스팅합니다. 1. Thymeleaf란? Thymeleaf는 비교적 최근에 만들어진 템플릿 엔진이자, 서버사이드 자바 템플릿의 한 종류입니다. 템플릿 엔진이란 동적 컨텐

hajoung56.tistory.com

 

 

 

 

 

1. Strings


문법 설명
${#strings.toString(obj)} Object obj를 문자열로 변환 (Null-safe)
${#strings.isEmpty(str)}
${#strings.arrayIsEmpty(strArray)}
${#strings.listIsEmpty(strList)}
${#strings.setIsEmpty(strSet)}
문자열이 Empty String인지 체크
문자열 배열이 공백인지 체크
문자열 List가 공백인지 체크
문자열 Set이 공백인지 체크
${#strings.defaultString(text,default)} 
${#strings.arrayDefaultString(textArr,default)} 
${#strings.listDefaultString(textList,default)} 
${#strings.setDefaultString(textSet,default)}
문자열이 공백이거나 null일때 기본값 설정
${#strings.contains(name,'ez')} 
${#strings.containsIgnoreCase(name,'ez')}
문자열 내 포함여부 체크
문자열 내 포함여부(대소문자 무시) 체크
${#strings.startsWith(name,'Don')}
${#strings.endsWith(name,endingFragment)} 
시작문자열/끝문자열 일치 여부 확인 
return true or false
${#strings.indexOf(name,frag)}
${#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,',')}        // returns String[] 
${#strings.listSplit(namesStr,',')}       // returns List<String> 
${#strings.setSplit(namesStr,',')}       // returns Set<String>
특정 문자열로 나누기, 문자열 사이에 특정 문자열 넣기
$(#strings.trim(str)} 공백 문자열로 나누기
$(#strings.length(str)} 문자열 길이
${#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)}
이스케이프 (' -> \')
언이스케이프 (\' -> ')
${#strings.randomAlphanumeric(count)} 랜덤 문자 생성

 

 

 

 

2. Numbers


문법 설명
${#numbers.formatInteger(num,3)}
${#numbers.arrayFormatInteger(numArray,3)}
${#numbers.listFormatInteger(numList,3)}
${#numbers.setFormatInteger(numSet,3)}
${#numbers.formatInteger(num,3, 'POINT')}
${#numbers.arrayFormatInteger(numArray,3,'COMMA')}


${#numbers.listFormatInteger(numList,3,'WHITESPACE')}
${#numbers.setFormatInteger(numSet,3,'NONE')}
정수형(Integer) 타입으로 변환 // 0003
정수 배열타입으로 변환 // [0002, 0004]
정수 List타입으로 변환
정수 Set타입으로 변환
정수형 타입에 중간에 마침표(.)을 넣음 // 123.456.789
정수형 배열 타입 중간에 콤마(,)를 넣음 
// [(123,456,789),(234,567,123)...]

정수형 List 타입 중간에 공백문자( )를 넣음
정수형 Set 타입에 문자를 넣지 않음
${#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,'POINT')}
${#numbers.arrayFormatDecimal(numArray,3,2,'COMMA')}


${#numbers.listFormatDecimal(numList,3,2,'WHITESPACE')}
${#numbers.setFormatDecimal(numSet,3,2,'NONE')}
${#numbers.formatDecimal(num,3,'COMMA',2,'POINT')}
실수형 타입에 소수점 2자리까지 표현
실수형 배열 타입으로 변환(소수점 2자리)
실수형 List 타입으로 변환(소수점 2자리)
실수형 Set 타입으로 변환(소수점 2자리)
실수형 타입에 중간에 마침표(.)을 넣음 // 123.456.789.00
실수형 배열 타입 중간에 콤마(,)를 넣음 
// [(123,456,789.00),(234,567,123.00)...]

실수형 List 타입 중간에 공백문자( )를 넣음
실수형 Set 타입에 문자를 넣지 않음
실수형 타입에 소수점 앞자리는 3칸마다 콤마(,)를 넣고
 뒷자리에는 2칸마다 마침표(.)를 넣음
ex) 123,456,789.01.02.34
${#numbers.formatCurrency(num)} 현재 통화 단위로 변경  // 달러: $200
${#numbers.formatPercent(num,3,2)} 퍼센트 단위로 변경  //  234.56%
${#numbers.sequence(from,to)}
${#numbers.sequence(from,to,step)}
from에서 to까지 정해진 step 만큼 증가하는 연속된 정수를 나타냄

 

 

 

 

 

3. Objects


문법 설명
${#objects.nullSafe(obj,default)}
${#objects.arrayNullSafe(objArray,default)}
${#objects.listNullSafe(objList,default)}
${#objects.setNullSafe(objSet,default)}
null이 들어오면 기본값 세팅
배열이 null인 경우 기본값 세팅
List가 null인 경우 기본값 세팅
Set이 null인 경우 기본값 세팅

 

 

 

 

4. Arrays


문법 설명
${#arrays.toArray(object)} Array 형태로 타입 변환
${#arrays.toStringArray(object)}
${#arrays.toIntegerArray(object)}
${#arrays.toLongArray(object)}
${#arrays.toDoubleArray(object)}
${#arrays.toFloatArray(object)}
${#arrays.toBooleanArray(object)}
문자열 Array로 변환
정수(int)값
정수(long)값
소수점(double)값
실수(float)값
참거짓(boolean)값
$(#arrays.length(array)} 배열의 길이 구하기
${#arrays.isEmpty(array)} 빈 배열 여부 체크
${#arrays.contains(array, element)}
${#arrays.containsAll(array, elements)}
배열에 해당 element가 있는지 체크

 

 

 

 

5. Lists


문법 설명
${#lists.toList(object)} List 형태로 타입 변환
${#lists.size(list)} List 사이즈 반환
${#lists.isEmpty(list)} 빈 List 체크
${#lists.contains(list, element)}
${#lists.containsAll(list, elements)}
List 내 해당 element 체크
${#lists.sort(list)}
${#lists.sort(list, comparator)}
List를 정렬(comparator 사용 가능)

 

 

 

 

6. Maps


문법 설명
${#maps.size(map)} Map의 사이즈 반환
${#maps.isEmpty(map)} 빈 Map 체크
${#maps.containsKey(map, key)}
${#maps.containsAllKeys(map, key)}
${#maps.containsValue(map, value)}
${#maps.containsAllValues(map, value)}
Map 내 일부 요소가 해당 Key를 가지고 있는지 체크
Map 내 전체 요소가 해당 Key를 가지고 있는지 체크
Map 내 일부 요소가 해당 Value를 가지고 있는지 체크
Map 내 전체 요소가 해당 Value를 가지고 있는지 체크

 

 

 

 

7. Messages


자바에서 제공해주는 MessageQueue 객체를 입력받아 출력을 할 때 주로 사용합니다.

문법 설명
${#messages.msg('msgKey')}
${#messages.msg('msgKey', param1...)}
${#messages.msgWithParams('msgKey', new Object[] {param1...})}
${#messages.arrayMsg(msgKeyArray)}
${#messages.listMsg(msgKeyList)}
${#messages.setMsg(msgKeySet)}
기본 메시지 출력
예) home.welcome="Welcome to our grocery store!, {0}"
이라고 하면

<p th:utext="#{home.welcome(${session.user.name})}"></p> 일때, 아래와 같이 출력됩니다.

<p>Welcome to our grocery store! Dembele</p>
${#messages.msgOrNull('msgKey')}
${#messages.msgOrNull('msgKey', param1...)}
${#messages.msgOrNullWithParams('msgKey', new Object[] {param1, param2...})}
${#messages.arrayMsgOrNull(msgKeyArray)}
${#message.listMsgOrNull(msgKeyList)}
${#message.setMsgOrNull(msgKeySet)}
값이 없는 경우엔 null 출력

 

 

 

 

8. Dates


Date 타입을 입력받아 특정 포맷으로 리턴해줍니다.

문법 설명
${#dates.format(date)}
${#dates.format(date, 'yyyy-MM-dd HH:mm:ss')}
${#dates.arrayFormat(datesArray)}
${#dates.listFormat(datesList)}
$(#dates.setFormat(datesSet)}
표준 날짜 포맷을 리턴
특정 날짜 포맷으로 리턴
날짜 배열 포맷 리턴
날짜 List 포맷 리턴
날짜 Set 포맷 리턴
${#dates.day(date)}
${#dates.month(date)}
${#dates.monthName(date)}
${#dates.monthNameShort(date)}
${#date.year(date)}
${#date.dayOfWeek(date)}
${#date.dayOfWeekName(date)}
${#date.hour(date)}
${#date.minute(date)}
${#date.second(date)}
${#date.millisecond(date)}
'연-월-일 시:분:초.밀리초' 의 포맷일 때

'일' 반환
'월' 반환
'월의 영문명' 반환 ex) January, May 등
'월의 영문명 앞 3글자' 반환 ex) Jan, May 등
'연' 반환
'요일의 인덱스 반환' ex) 0:일요일 , 2:화요일... 반환은 0, 2
'요일명 반환' ex) Sunday, Tuesday...
'시' 반환
'분' 반환
'초' 반환
'밀리초' 반환
${#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)}
Date 타입 반환의 기본 생성자(필수값 year, month, day)
${#dates.createNow()}
${#dates.createNowForTImeZone()}
${#dates.createToday()}
${#dates.createTodayForTimeZone()}
현재 시간 반환
현재 로컬 시간 반환
오늘 날짜 반환
현재 로컬의 오늘 날짜 반환

 

 

 

 

9. Calendars


자바에서 제공하는 Calendar 타입을 입력받아 사용하는 함수입니다.

문법 설명
${#calendars.format(cal)}
${#calendars.arrayFormat(calArray)}
${#calendars.listFormat(calList)}
${#calendars.setFormat(calSet)}
${#calendars.formatISO(cal)}
${#calendars.arrayFormatISO(calArray)}
${#calendars.listFormatISO(calList)}
${#calendars.setFormatISO(calSet)}
표준 캘린더 포맷 리턴
캘린더 배열 리턴
캘린더 List 리턴
캘린더 Set 리턴
ISO8601 포맷의 캘린더 리턴
ISO8601 포맷의 캘린더 배열 리턴
ISO8601 포맷의 캘린더 List 리턴
ISO8601 포맷의 캘린더 Set 리턴
${#calendars.format(cal, 'yyyy-MM-dd HH:mm')}
${#calendars.arrayFormat(calArray, 'yyyy-MM-dd HH:mm')}
${#calendars.listFormat(calList, 'yyyy-MM-dd HH:mm')}
${#calendars.setFormat(calSet, 'yyyy-MM-dd HH:mm')}
특정 포맷의 캘린더 리턴
${#calendars.day(date)}
${#calendars.month(date)}
${#calendars.monthName(date)}
${#calendars.monthNameShort(date)}
${#calendars.year(date)}
${#calendars.dayOfWeek(date)}
${#calendars.dayOfWeekName(date)}
${#calendars.hour(date)}
${#calendars.minute(date)}
${#calendars.second(date)}
${#calendars.millisecond(date)}
'연-월-일 시:분:초.밀리초' 의 포맷일 때

'일' 반환
'월' 반환
'월의 영문명' 반환 ex) January, May 등
'월의 영문명 앞 3글자' 반환 ex) Jan, May 등
'연' 반환
'요일의 인덱스 반환' ex) 0:일요일 , 2:화요일... 반환은 0, 2
'요일명 반환' ex) Sunday, Tuesday...
'시' 반환
'분' 반환
'초' 반환
'밀리초' 반환
${#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)}
Calendar 타입 반환의 기본 생성자(필수값 year, month, day)
${#calendars.createForTimeZone(year,month ,day,tz)}
${#calendars.createForTimeZone(year,month ,day,hour,minute,tz)}
${#calendars.createForTimeZone(year,month ,day,hour,minute,second,tz)}
${#calendars.createForTimeZone(year,month ,day,hour,minute,second,millisecond,tz)}
위의 함수에서 TimeZone 파라미터를 추가
tz='Asia/Seoul' 을 넣으면 서울 기준
${#calendars.createNow()}
${#calendars.createNowForTImeZone()}
${#calendars.createToday()}
${#calendars.createTodayForTimeZone()}
현재 시간 반환
현재 로컬 시간 반환
오늘 날짜 반환
현재 로컬의 오늘 날짜 반환
반응형

댓글