728x90
반응형
Spring MVC에 GET, POST 방식에 동일 이름 커맨드 객체 사용하는 방법을 알아보겠습니다.
form 태그를 사용하려면 커맨드 객체가 반드시 존재해야 합니다.
폼 표시 요청이 왔을 때에도 커맨드 객체를 생성해서 모델에 저장해야 합니다. RegisterController 클래스의 handleStep2() 메서드는 다음과 같이 Model에 직접 객체를 추가합니다.
@PostMapping("/register/step2")
public String handleStep2(@RequestParam(value = "agree", defaultValue = "false") Boolean agree, Model model) {
if(!agree) {
return "register/step1";
}
model.addAttribute("registerRequest", new RegisterRequest());
return "register/step2";
}
위 소스에 커맨드 객체를 파라미터로 추가하면 더 간단해집니다.
@PostMapping("/register/step2")
public String handleStep2(@RequestParam(value = "agree", defaultValue = "false") Boolean agree,
RegisterRequest registerRequest) {
if (!agree) {
return "register/step1";
}
return "register/step2";
}
이름을 명시적으로 지정하려면 @ModelAttribute 애노테이션을 사용합니다.
입력 폼과 폼 전송 처리에서 사용할 커맨드 객체의 속성 이름이 클래스 이름과 다르다면 다음과 같이 GET 요청과 POST 요청을 처리하는 메서드에 @ModelAttribute 애노테이션을 붙인 커맨드 객체를 파라미터로 추가하면 된다.
@Controller
@RequestMapping("/login")
public class LoginController{
@GetMapping
public String form(@ModelAttribute("login")LoginCommand loginCommand){
return "login/loginForm";
}
@PostMapping
public String form(@ModelAttriubte("login")LoginCommand loginCommand){
...
}
}
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] 메시지 처리 : MessageSource, <spring:message> (0) | 2024.05.11 |
---|---|
[Spring] Spring Message 기능 사용해보기 (0) | 2024.05.07 |
[Spring] ModelAndView 이용해서 뷰 선택하고 모델을 전달해보기 (0) | 2024.04.29 |
[Spring] MVC 주요 에러 발생 원인 알아보기 (Logback 설정) (0) | 2024.04.17 |
[Spring] 디폴트 핸들러와 HandlerMapping의 우선순위 (0) | 2024.04.08 |