📌 Model에 값을 저장하는 방법
1. 요청핸들러 메서드의 매개변수에 Model로 담기
@GetMapping("/register")
public String form(Model model) {
model.addAttribute("userRegisterForm", new UserRegisterForm());
return "form";
}
- 스프링이 요청핸들러 메소드의 매개변수를 조사한다.
- 스프링이 Model객체를 생성한다.
- 스프링이 Model객체를 요청핸들러 메소드의 매개변수로 전달한다.
- 개발자가 UserRegisterForm객체를 생성해서 Model객체에 담는다.
- form.jsp로 내부이동 시키는 문자열을 반환한다.
- 스프링이 ModelAndView객체를 생성한다.
- ModelAndView객체에 Model을 저장한다.
- ModelAndView객체에 뷰페이지 이름을 저장한다.
@GetMapping("/register")
public String form(UserRegisterForm userRegisterForm) {
return "form";
}
- 스프링이 요청핸들러 메소드의 매개변수를 조사한다.
- 스프링이 UserRegisterForm객체를 생성한다.
- 요청파라미터를 조사해서 UserRegisterForm객체의 멤버변수에 값을 채운다.
(지금은 요청파라미터 값이 없기 때문에 필드에 값이 저장되지 않는다.)
- form.jsp로 내부이동 시키는 문자열을 반환한다.
- 스프링이 ModelAndView객체를 생성한다.
- ModelAndView객체에 UserRegisterForm객체를 저장한다.(요청 핸들러 메소드의 매개변수에 정의된 것은 전부 모델에 저장한다.)
- ModelAndView객체에 뷰페이지 이름을 저장한다.
✔️ 폼 입력값 유효성 체크
- 상단의 public class UserRegisterForm 2개는 서로 다르다.
- 좌측의 첫번째 클래스는 navbar의 회원가입을 통해 최초 진입해서 값이 들어있지 않고,
- 우측의 두번째 클래스에는 회원가입 폼에서 회원가입 버튼을 클릭했지만 유효성 검사를 통과하지 못해서 입력한 값이 담겨 있는 상태