Post로 들어온 정보를 memberForm의 name에 입력할 때 저절로 setName이 되어 저장된다!
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<form action="/members/new" method="post">
<div class="form-group">
<label for="name">이름</label>
<input type="text" id="name" name="name" placeholder="이름을 입력하세요">
</div>
<button type="submit">등록</button> </form>
</div> <!-- /container -->
</body>
</html>
public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
html 내의 form 태그 안에 name 이란 필드의 변수명이 name 으로 되어 있고 해당 이름이 MemberForm의 필드인 name 과 동일하다. 따라서 아래와 같이 파라미터로 memberForm 의 form 을 넣어주면 자동으로 setName을 하게 된다.
@Controller
public class MemberController {
private MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping("/members/new")
public String createForm() {
return "members/createMemberForm";
}
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
}
Post로 들어와 create 메서드 내에서 MemberForm 을 파라미터로 전달할 때 자동으로 찾아 값을 넣어주게 되는 것이다.