Model1 ->Model2로 가는 과도기에서 Java소스를 화면단에서 관행처럼 가져다 붙였으나 사실 이런 화면상 처리는 js로 해주는 것이 맞다. 아래 예시는 간단하지만 기존 JSP에서 쓰던 복잡한 Java소스를 thymeleaf 엔진에서 부득이하게 가져다 써야 하는 경우가 생겨 알게된 사실을 정리해 본다.
JSP에서는 자바 유틸클래스에서 만들어준 여러가지 method들을 사용하려면 따로 .tld 파일을 만들어 설정해준 후, JSP상단에 custom tag library를 선언해줬어야 했다.
비교를 해보면,
아래처럼 CustomUtil.java 클래스 안에 11자리의 전화번호를 받아 '-'문자로 번호를 나누어 전체 전화번호를 문자열로 반환하는 setPhoneNum메서드가 있다고 하자.
CustomUtil.java
public String setPhoneNum(String phone) {
if (!StringUtils.hasText(phone))
return null;
if (phone.length() == 11) {
return phone.substring(0, 3) + "-" + phone.substring(3, 7) + "-" + phone.substring(7);
} else if (phone.length() == 10) {
return phone.substring(0, 3) + "-" + phone.substring(3, 6) + "-" + phone.substring(6);
} else {
return phone;
}
}
JSP에서 java에서 만든 유틸클래스의 다양한 메서드들을 활용하기 위해서는 아래처럼 별도로 .tld파일을 만들어 줘야한다.
fnCustomUtil.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<tlib-version>1.1</tlib-version>
<uri>sus</uri>
<function>
<description>휴대폰 번호 포맷 지정</description>
<name>setPhoneNum</name>
<function-class>com.yesora.util.CustomUtil</function-class>
<function-signature>
java.lang.String setPhoneNum(java.lang.String)
</function-signature>
<example>
${sus:setPhoneNum('01011223344')}
</example>
</function>
</taglib>
그리고 JSP파일에서는 아래와 같이 상단에 태그 라이브러리를 선언해주고 custom tag를 사용해야 한다.
jsptest.jsp
<%@ taglib prefix="sus" uri="/WEB-INF/tlds/fnCustomUtil.tld"%>
<c:if test="${phone != null}">
${sus:setPhoneNum(phone)}
</c:if>
Thymeleaf에서는 JSP에서의 .tld처럼 별도의 설정 파일은 필요치 않고 그냥 사용할 유틸클래스(CustomUtil.java)를 빈으로 설정(클래스에 @Component만 붙여주면 된다)해주고 아래와 같이 사용만 하면 된다.
thymeleaftest.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p th:text="${@customUtil.setPhoneNum(phone)}"></p>
</body>
</html>
ref : https://www.thymeleaf.org/doc/articles/springmvcaccessdata.html
'Tech > Web' 카테고리의 다른 글
Mutual TLS (상호인증 TLS) X.509 적용기 (0) | 2021.09.30 |
---|---|
브라우저에 URL을 입력하면 무슨 일이 일어날까? (0) | 2021.01.21 |
log.info 사용 안 될 경우(log cannot be resolved/Lombok에러) (0) | 2020.04.28 |
STS4 설치방법(JDK설치/환경변수설정,톰캣설치/연동,workspace 인코딩설정) (0) | 2020.04.27 |
HTTP 웹의 기초 (0) | 2020.04.02 |
댓글