
th:each ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต ์ถ๋ ฅ | ๊ฐ๋ | ์ค๋ช |
|---|---|
th:each | ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก HTML์ ์ถ๋ ฅํ ๋ ์ฌ์ฉ |
Model.addAttribute | ์๋ฒ์์ HTML๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉ |
@ToString | ํด๋์ค์ ๋ชจ๋ ๋ณ์๋ฅผ ๋ฌธ์์ด๋ก ์ถ๋ ฅํด์ฃผ๋ Lombok ๊ธฐ๋ฅ |
List | ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ ๋ณ์์ ๋ด๋ ์๋ฃํ |
static ํด๋ | CSS, JS, ์ด๋ฏธ์ง ๊ฐ์ ์ ์ ์์์ ๋ณด๊ดํ๋ ํด๋ |
1. ์ํ ๋ชฉ๋ก ํ์ด์ง ๋ ์ด์์ (list.html)
<div class="card" th:each="i : ${items}">
<img src="https://placehold.co/300">
<div>
<h4 th:text="${i.title}">๋ฐ์ง</h4>
<p th:text="${i.price}">7์ต</p>
</div>
</div>
th:each="i : ${items}" โ ์๋ฒ์์ ๋ณด๋ธ items ๋ฆฌ์คํธ๋ฅผ ํ๋์ฉ ๋ฐ๋ณต ์ถ๋ ฅ ${i.title} โ i ๊ฐ์ฒด์ title ์ปฌ๋ผ ์ถ๋ ฅ ${i.price} โ i ๊ฐ์ฒด์ price ์ปฌ๋ผ ์ถ๋ ฅ 2. CSS ์ ์ฉ (main.css, static ํด๋์ ์ ์ฅ)
.card {
margin : 30px auto;
display : flex;
}
.card img {
width : 150px;
margin-right : 20px;
}
<link href="/main.css" rel="stylesheet">
3. ์๋ฒ ์ฝ๋ (ItemController.java)
@GetMapping("/list")
String list(Model model) {
List<Item> result = itemRepository.findAll();
model.addAttribute("items", result);
return "list.html";
}
4. @ToString (Item.java)
@Entity
@ToString
public class Item {
public Long id;
public String title;
public Integer price;
}
@ToString ๋ถ์ด๋ฉด System.out.println(item); ์คํ ์ ๋ชจ๋ ๋ณ์๊ฐ์ด ์ถ๋ ฅ๋จ th:each ๋ฌธ๋ฒ์ ์ฒ์์ ๋ฏ์ค์ง๋ง ์ฌ์ค์ for๋ฌธ๊ณผ ๋์ผํ๋ค. th:each๋ก HTML ๋ฐ๋ณต ์ถ๋ ฅ ๊ฐ๋ฅ Model.addAttribute๋ก ์๋ฒ ๋ฐ์ดํฐ โ HTML ์ ๋ฌ @ToString์ผ๋ก ๊ฐ์ฒด ์ถ๋ ฅ ํธ๋ฆฌํ๊ฒ ์ฒ๋ฆฌ