개발지식
Thymeleaf - Utility Object 함수를 활용한 문자열 변수 핸들링 하기
devLog by Ronnie's
2021. 10. 2. 14:26
Thymeleaf - Utility Object 함수를 활용한 문자열 변수 핸들링 하기
게시판 작성중에 넘겨받은 이름을 보안상에 문제로 가운데 이름을 '*'로 바꿔서 렌더링을 해줘야 하는 경우가 생겼다. 템플릿 엔진으로는 thymeleaf를 사용하고 있었기에 thymeleaf가 제공해주는 기능이 없는지 찾아보았는데 역시나 있다. (찾아보면 왠만한건 다 구현..) 블로그로도 찾아보았는데 해당 경우가 없는거 같아서 글로 남겨둔다.
문법
먼저 사용법은 Utility Object 함수에서 제공해주는 strings 함수를 사용하면 된다. 사용법은 아래와 같다.
${#strings.substring(name,3,5)}
사용법
하지만 원하는 기능인 이름을 *로 변경하는 작업은 여러 기능을 합쳐서 사용해야된다. 먼저 사용될 기능은 if문이다.
이름이 외자인 2글자, 일반적인 3글자, 그리고 4글자인 경우를 처리하는 방향으로 잡았다. 이렇게 if를 사용해서 경우를 나누면 서버에서 받은 이름을 string.substring를 통해 자르고 string.replace를 통해 '*' 로 바꾼다.
<td th:if="${#strings.length(contact.name)==2}" th:text="${#strings.replace(contact.name, #strings.substring(contact.name,1,2), '*')}"></td>
처음에는 substring 말고 원하는 index에 위치하는 문자열을 반환받는 것을 찾아 '*'로 대체하려고 했는데 아무리 뒤져봐도 없는 것 같다.. 혹시나 못찾은 것이었다면 댓글로 부탁드린다. 그 외에 다른 방법도 있으면 부탁드린다.
참고
마지막으로 아래는 타임리프 doc 주소이다. 필요한 기능은 찾아서 쓰면 될 것 같다.
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#strings