• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

로그인 시 GetMapping에 @ModelAttribute를 넣어주는이유

22.10.03 16:10 작성 조회수 524

0

안녕하세요 로그인 기능 작성할 때 GetMapping에서도 ModelAttribute를 넣어주는 이유가 혹시 thymeleaf작성시 th:object=${loginForm}을 넣어주기 위해서 작성하는건가요..?? 이 부분이 궁금하여 질문드립니다. 감사합니다.

답변 2

·

답변을 작성해보세요.

2

OMG님의 프로필

OMG

2022.10.03

안녕하세요. DevFit님, 공식 서포터즈 OMG입니다.

codesweaver님의 답변을 참고하면서 다음과 같은 테스트를 해보시길 권장드립니다.

파라미터에 Model model을 추가하신 후,

return 에 중단점 지정하고 디버깅 모드로 실행하여 model에 담긴 값을 확인해보시면 이해 되실꺼에요 ^^

감사합니다.

0

codesweaver님의 프로필

codesweaver

2022.10.03

안녕하세요, 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 ...

}

}

감사합니다.