[Spring] Thymeleaf로 데이터를 출력하는 법, 표현식 유틸리티 객체

류넹·2024년 3월 20일
1

Spring

목록 보기
42/50

💡 사용예시

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";		// "src/main/resources/templates/post/list.html"로 내부이동
	}
}

2. html

  • <tr th:each="post: ${posts}"> 사용
  • 데이터를 표현할 때 표현되는 방식을 조작하고 싶을 때는 # 사용
    • Thymeleaf 표현식 유틸리티 객체를 사용하는 것
<tr th:each="post: ${posts}"> <!-- foreach, 반복 -->
	<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)}
profile
학습용 커스터마이징 간단 개발자 사전

0개의 댓글