티스토리 뷰
반응형
Author: 니용
이전 글에서 Thymeleaf의 기본적인 문법을 확인하였다면, 이번 글에서는 Thymeleaf를 더 심도 있게 활용할 수 있는 방법을 알려드리려고 합니다.
Thymeleaf는 Utility Object라고 하는 함수를 기본적으로 내장하고 있습니다.
흔히 우리가 사용하는 자바 언어의 String 내에 기본 내장되어 있는 함수와 이를 응용해서 쓸 수 있는 java.lang.common3.StringUtils와 같은 클래스들이 이러한 예시라고 생각하면 좋습니다.
대표적으로 사용하는 유틸리티들을 아래에 나열하였습니다. 사용 방법은 ${#...}로 사용합니다.
1. Strings
Grammar (Method) | Description |
${#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
Grammar (Method) | Description |
${#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
Grammar (Method) | Description |
${#objects.nullSafe(obj,default)} ${#objects.arrayNullSafe(objArray,default)} ${#objects.listNullSafe(objList,default)} ${#objects.setNullSafe(objSet,default)} |
null이 들어오면 기본값 세팅 배열이 null인 경우 기본값 세팅 List가 null인 경우 기본값 세팅 Set이 null인 경우 기본값 세팅 |
4. Arrays
Grammar (Method) | Description |
${#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
Grammar (Method) | Description |
${#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
Grammar (Method) | Description |
${#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를 가지고 있는지 체크 |
반응형
'Client' 카테고리의 다른 글
Progress Bar 붙이기 (0) | 2020.07.14 |
---|---|
반응형 웹을 만들어보자 (0) | 2020.06.13 |
Thymeleaf Utility Objects (2) (0) | 2020.06.11 |
Thymeleaf 기본 문법 (0) | 2020.06.09 |
[React.js] React를 제대로 활용하기 (Hooks) (0) | 2020.04.06 |
[React.js] React를 제대로 활용하기 (3) (0) | 2020.03.22 |
댓글
공지사항