members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; }"> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; }"> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; }">
@GetMapping("/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
<!DOCTYPE HTML>
<html xmlns:th="<http://www.thymeleaf.org>">
<head th:replace="fragments/header :: header" />
<body>
<div class="container">
<div th:replace="fragments/bodyHeader :: bodyHeader" />
<div>
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>이름</th> <th>도시</th> <th>주소</th> <th>우편번호</th>
</tr>
</thead>
<tbody>
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
<td th:text="${member.address?.city}"></td> <td th:text="${member.address?.street}"></td> <td th:text="${member.address?.zipcode}"></td>
</tr>
</tbody>
</table>
</div>
<div th:replace="fragments/footer :: footer" />
</div> <!-- /container -->
</body>
</html>
?
는 널 체크 이다. 옵셔널 체이닝과 같다.폼 객체를 써야하나 엔티티를 바로 써야하나?
API를 만들 때는 이유를 불문하고 절대 엔티티를 넘기면 안된다!