타임리프 (Thymeleaf) 란?

Back-End/Spring 2019. 7. 7. 20:13
728x90
반응형

- 타임리프 템플릿 이란? -


템플릿 엔진, th:xx 형식으로 속성을 html 태그에 추가하여 값이나 처리 등을 페이지에 심을 수 있다.


JSP, 그루비 등 다른 템플릿도 스프링 부트에서 사용 가능하지만 타임리프가 가장 많이 쓰인다고 한다.




-타임리프 템플릿 문법 및 표현방법 정리-


th:text


th:text는 태그 안에 들어가는 텍스트 값이다.


<span th:text="${eventFvrDtl.winRnkg}"></span>
cs



th:if, th:unless, th:value


th:if는 if, th:unless는 else 표현이다.


th:value는 태그 안의 value 이다.


<th:block th:if="${eventPtcpPsbOrdData != null && #lists.size(eventPtcpPsbOrdData.eventPtcpOrdInfoList) > 0}">
    <input type="hidden" id="ibx_TotalPurAplAmt" th:value="${totalPurAplAmt}"/>
</th:block>

<th:block th:unless="${eventPtcpPsbOrdData != null && #lists.size(eventPtcpPsbOrdData.eventPtcpOrdInfoList) > 0}">
    <input type="hidden" id="ibx_TotalPurAplAmt" value="0"/>
</th:block>  



th:utext (unescaped text)


th:utext는 <div></div> 같은 태그 형식의 코드를 삽입하고 싶을 때 사용한다.


태그형식의 텍스트가 들어올시 태그로 인식한다.


<!-- HTML 컨텐츠 영역 -->
<th:block th:utext="${#campaignUtils.unescapeHtml(eventDispTempleteInfo.htmlContents)}"></th:block>

cs




th:fagment


include와 비슷하다.


특정 영역을 가져와서 나타낼 수 있다.


예를 들어 페이지마다 각각의 게시판을 가지고 싶은 경우


포함하는 곳.


ex) eventPage1.html


<th:block th:if="${#lists.size(eventDispTemplateCornerList)} > 0" th:each="eventDispTemplateCorner : ${eventDispTemplateCornerList}">
    <!-- 이벤트 템플릿 코너 -->
    <th:block th:include="${eventDispTemplateCorner.cmpnTmplFileUrl} :: corner (${eventDispTemplateCorner.cmpnNo}, ${eventData.eventBaseInfo.eventPtcpPsbYn})"></th:block>
</th:block>



받는 곳.


ex) board.html


<th:block th:fragment="corner (cmpnNo, eventPtcpPsbYn)">
    <div class="content_title noline">
        <p class="title">게시판</p>
    </div>
</th:block>



controller을 거쳐 화면으로 가져온 데이터를 스크립트로 제어할 때


// controller
ModelAndView mv;
mv.addObject("eventData", eventData);
return mv


// controller를 거쳐 화면으로 가져온 데이터를 스크립트로 제어할때
var data1 = [[${eventData}]];
var eventPtcpPsbYn = [[${#strings.defaultString(eventData.eventBaseInfo.eventPtcpPsbYn, 'Y')}]];

cs



태그 안의 attribute를 타임리프로 정의할 때


// 태그 안의 attribute를 타임리프로 정의할때
<div id="myDiv1" th:attr="usemap=|#E_${eventData.eventBaseInfo.cmpnNo}|">
</div>
 
// 정의된 결과
<div id="myDiv1" usemap="#E_21082">
</div>



출처

https://shlee0882.tistory.com/134

728x90
반응형
: