REF-dateForamtter등 발전된기능 {{}}:dateFormatter
(단, 이경우는 WebMvcConfig.java나 xml등에 addFormatter override나, formatter지정이 필요. Ref안에 xml은 있음)
spring의 thymeleaf를 통해 java의 EL을 html에 사용하는 듯한 느낌으로 사용할 수 있다.
@{ }로 사용하는 Variable expression은 java의 EL과 동일하고,
그 외에도 다음과 같은 것들이 있다.
${...}
: Variable expressions - iterator처럼 반복도 지원된다.*{...}
: Selection expressions. - th:object = ${book}과 같이 $로 선택된 object내에서 동작한다.#{...}
: Message (i18n) expressions. - 다국적 메시지 지원.@{...}
: Link (URL) expressions. -변수 파라미터도 가능하고, 상대경로 URL도 가능
~{...}
: Fragment expressions. - 주로 div안으로 삽입 가능.
thymeleaf 로 form을 submit할 때는 다음과 같다. REF
<form action="#" th:action="@{/greeting}" th:object="${greeting}" method="post">
<p>Id: <input type="text" th:field="*{id}" /></p>
<p>Message: <input type="text" th:field="*{content}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
@{/greeting} : 처리할 URL
${greeing} : model형태로 넘길 object
th:text 보다는 th:field를 써야 object매핑이 되겠군요.
<table if 사용법> REF
<td th:if="${member.status} == '1'" th:text="Active"></td>
<td th:unless="${member.status} == '1'" th:text="Inactive"></td>
<a th:if="${history.myProject.payType eq 'credit_card'}"
==> { }안에서 string비교시 eq도 사용가능.
<switch >
<td class="col-sm-2" th:switch="${ticket.status}">
<span th:case = 'unused'> "Unused"</span>
<span th:case = 'used'> "Used"</span>
<span th:case = 'unknown'> "Unknown"</span>
</td>
<enum사용시>
<td class="col-sm-1" th:if="${ticket.type == T(my.constant.TicketType).PAID}" th:text="Paid"></td>
${ticket.isExpired()}와 같이 public 함수도 사용이 가능하다.
==고급===
[[ ]] in-line 프로그래밍. REF
${{ }} 자동변환. REF
==th 함수==
${#strings.isEmpty(...))}
${#lists.size(...)}
th:block - 매우 유용. 전체 block을 if로 묶어서 나타내거나 숨길 수 있음.
<th:block th:if="${@environmentHelper.isBeta()}"> 각종 javascript등.. 코드</th:block>