작성
·
651
0
안녕하세요 로그인 기능 작성할 때 GetMapping에서도 ModelAttribute를 넣어주는 이유가 혹시 thymeleaf작성시 th:object=${loginForm}을 넣어주기 위해서 작성하는건가요..?? 이 부분이 궁금하여 질문드립니다. 감사합니다.
답변 2
0
안녕하세요, DevFit 님! 공식 서포터즈 codesweaver 입니다.
컨트롤러 에서 @ModelAttribute 사용 하는 경우는
HTML Form 에서 넘어온 값들을 DTO 객체에 간편하게 담아 쓰기 위해 사용하는데요,
가렴 Form의 인풋 박스가 다음과 같이 있을때
<input type="text" name="userName" />
<input type="password" name="userPassword" />
이 값을 request 에서 하나씩 추출하여 사용 하기는 불편하겠지요? Form 요소가 추가 될 때마다 계속 request.get(); 을 호출하여 값을 받아주어야 하니까요.
이럴때 Form을 받는 DTO 객체를 하나 만들어 편리하게 사용할 수 있습니다.
@Getter @Setter
class XxxFormDto {
private String userName;
private String userPassword;
}
이처럼 DTO를 생성하고 컨트롤러에서 다음과 같이 하면 폼 요소의 '이름'과 DTO 객체의 '변수명'을 기준으로 자동으로 값을 할당합니다.
@Controller
public classs XxxController {
public String login(@ModelAttribute XxxFormDto dto) {
... some code ...
}
}
감사합니다.