반응형
1. th:fi, th:unless
- th:if는 변수 표현식의 OGNL(Object Graph Navigation Language)을 활용한 조건식으로 조건문을 작성하면 결과가 true 일 때 해당 태그의 범위가 처리 됨.
- th:unless는 표현식의 OGNL을 활용한 결과가 false일 때 해당 태그 범위가 처리 됨
<p th:if="${ num > 0}"> 넘어온 값은 0보다 크다.</p>
<p th:if="${ num < 0}"> 넘어온 값은 0보다 작다.</p>
<p th:unless="${ num < 0 }"> 넘어온 값은 0보다 작지 않다.</p>
<th:block th:if="${ str == '사과' }">
<p>사과 좋아용</p>
</th:block>
<th:block th:if="${ str == '바나나' }">
<p>바나나 좋아용🍌🍌</p>
</th:block>
controller에서 넘긴 값
model.addAttribute("num", 1);
model.addAttribute("str", "바나나");
- &&, ||를 and, or를 사용해서 다중 조건 처리
<p th:if="${ num > 0 and num <=10 }">1부터 10까지의 양수</p>
<p th:if="${ str != null and str == '바나나' }">바나나 좋아요~~🍌🍌</p>
- 타임리프 Utility Objects에서 제공한는 #string메소드를 통해서 null에 대한 처리 가능
<p th:if="${ !#strings.isEmpty(str) and str == '바나나'}">바나나 좋아요!~!</p>
2. th:switch, th:case
- th:switch와 th:case를 통해 해당 조건의 값이 어떤 case에 해당 되는지에 따라 태그를 선택할 수 있음
<th:block th:switch="${ str }">
<span th:case="사과">사과가 선택 되었습니다.</span>
<span th:case="바나나">바나나가 선택 되었습니다.</span>
</th:block>
3. th:each
(1) th:each로 반복문을 사용할 수 있음
<table border="1">
<tr>
<th>이름</th>
<th>나이</th>
<th>성별</th>
<th>주소</th>
</tr> <!-- member는 변수명 -->
<tr th:each="member :${ memberList }">
<td th:text="${ member.name }"></td>
<td th:text="${ member.age }"></td>
<td th:text="${ member.gender }"></td>
<td th:text="${ member.address }"></td>
</tr>
</table>
(2) th:each에 stat을 추가해서 반복 상태를 확인할 수 있음
index | 0부터 시작하는 인덱스 값 |
count | 1부터 시작하는 값 |
current | 현재 객체의 정보 |
even | 짝수 번째 데이터 여부 |
odd | 홀수 번째 테이터 여부 |
first | 첫 번째 데이터 여부 |
last | 마지막 데이터 여부 |
<table border="1">
<tr>
<th>이름</th>
<th>나이</th>
<th>성별</th>
<th>주소</th>
<th>index</th>
<th>count</th>
<th>current</th>
<th>even</th>
<th>odd</th>
<th>first</th>
<th>last</th>
</tr>
// 사용할 변수명, 두번째 변수는 stat로 변수 선언하여 사용
<tr th:each="member, stat :${ memberList }">
<td th:text="${ member.name }"></td>
<td th:text="${ member.age }"></td>
<td th:text="${ member.gender }"></td>
<td th:text="${ member.address }"></td>
<td th:text="${ stat.index }"></td>
<td th:text="${ stat.count }"></td>
<td th:text="${ stat.current }"></td>
<td th:text="${ stat.even }"></td>
<td th:text="${ stat.odd }"></td>
<td th:text="${ stat.first }"></td>
<td th:text="${ stat.last }"></td>
</tr>
</table>
(3) th: each에 stat을 변수로 선언하지 않으면 ' 변수명 + stat '로 반복 상태를 확인할 수 있음
<table border="1">
<tr>
<th>이름</th>
<th>나이</th>
<th>성별</th>
<th>주소</th>
<th>index</th>
<th>count</th>
<th>current</th>
<th>even</th>
<th>odd</th>
<th>first</th>
<th>last</th>
</tr>
<tr th:each="member :${ memberList }">
<td th:text="${ member.name }"></td>
<td th:text="${ member.age }"></td>
<td th:text="${ member.gender }"></td>
<td th:text="${ member.address }"></td>
<td th:text="${ memberStat.index }"></td>
<td th:text="${ memberStat.count }"></td>
<td th:text="${ memberStat.current }"></td>
<td th:text="${ memberStat.even }"></td>
<td th:text="${ memberStat.odd }"></td>
<td th:text="${ memberStat.first }"></td>
<td th:text="${ memberStat.last }"></td>
</tr>
</table>
4. #numbers Utility Object를 이용하여 반복문 작성
<th:block th:each="num : ${ #numbers.sequence(5, 10)}">
<a th:href="@{|numbering/${ numStat.count }|}" th:text="번호 + ${ num }"></a>
</th:block>
반응형
'프로그래밍 > Spring & Spring boot' 카테고리의 다른 글
[Spring boot ] REST API - 01 REST API & POSTMAN (0) | 2022.11.02 |
---|---|
[Springboot / 스프링부트] thymeleaf (3) 타임리프 th:with, Spring EL, 속성값 설정 (1) | 2022.09.26 |
[Springboot / 스프링부트] thymeleaf (1) 타임리프 표현식 (0) | 2022.09.26 |
[Spring/JPA] Mapping (3) 연관 관계 매핑 (단반향, 양방향) (0) | 2022.09.26 |
[Spring/JPA] Mapping (2) @SequenceGenerator , @TableGenerator, @Embeddable, @IdClass (0) | 2022.09.23 |