💡 사용예시
1. Controller
- 화면으로 이동할 때는 기본적으로 Model이 있음
@Controller
@RequestMapping("/post")
@RequiredArgsConstructor
public class PostController {
private final PostService postService;
@GetMapping("/list")
public String list(Model model) {
List<Post> posts = postService.getPosts();
model.addAttribute("posts", posts);
return "post/list";
}
}
2. html
<tr th:each="post: ${posts}">
사용
- 데이터를 표현할 때 표현되는 방식을 조작하고 싶을 때는 # 사용
- Thymeleaf 표현식 유틸리티 객체를 사용하는 것
<tr th:each="post: ${posts}">
<td th:text="${post.id}">1</td>
<td th:text="${post.title}">연습</td>
<td th:text="${post.user.name}">홍길동</td>
<td th:text="${#temporals.format(post.createdDate, 'yyyy-MM-dd')}">2024-03-20</td>
</tr>
✔️ 타임리프에서의 요청파라미터 작성 방법
- /post/detail(id=${post.id})
<td><a th:href="@{/post/detail(id=${post.id})}" th:text="${post.title}">연습</a></td>
📌 Thymeleaf 표현식 유틸리티 객체
1. #dates
- java.util.Date 객체에 대한 유용한 기능을 제공한다. (날짜에 대한 포맷팅)
- ex)
${#dates.format(post.createdDate, 'yyyy-MM-dd')}
2. #temporals
- java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime 등 java.time 패키지의 객체들에 대한 유용한 기능을 제공한다.
- ex)
${#temporals.format(post.createdDate, 'yyyy-MM-dd')}"
3. #strings
- java.lang.String 객체에 대한 유용한 기능을 제공한다.
- ex)
${#string.isEmpty(post.title)}
- ex)
${#string.length(post.title)}
- ex)
${#string.contains(post.title, '연습')}
- ex)
${#string.startsWith(post.title, '연습')}
- ex)
${#string.endsWith(post.title, '연습')}
- ex)
${#string.toUpperCase(post.title)}
- ex)
${#string.toLowerCase(post.title)}
- ex)
${#string.equals(post.title, '연습')}
4. #lists
- java.util.List 객체에 대한 유용한 기능을 제공한다.
- ex)
${#lists.isEmpty(posts)}
- ex)
${#lists.size(posts)}
5. #sets
- java.util.Set 객체에 대한 유용한 기능을 제공한다.
- ex)
${#sets.isEmpty(posts)}
- ex)
${#sets.size(posts)}
6. #maps
- java.util.Map 객체에 대한 유용한 기능을 제공한다.
- ex)
${#maps.isEmpty(posts)}
- ex)
${#maps.size(posts)}
- ex)
${#maps.containsKey(posts, key)}