Java/SpringBoot

@ModelAttribute

dev.jelee 2024. 10. 28. 14:35

생각

@ModelAttribute 어노테이션은 객체를 바인딩한다고 알고 있다. 객체라면 내가 만든 DTO 라고 해야하나..

여하튼 좀 더 자세히 알고 싶어서 정리해두면 좋을 거 같아서 글을 작성한다.

 

@ModelAttribute

  • HTTP 요청의 파라미터를 객체에 바인딩할 때 사용한다.
  • 주로 폼 데이터를 처리할 때 유용하다.
<!-- html 예시 -->
<form action="/register" method="post">
    <input type="text" name="name" placeholder="이름 입력" required />
    <button type="submit">등록</button>
</form>
// Controller 예시
@PostMapping("/register")
public String register(@ModelAttribute User user) {
	// user 객체에 폼 데이터가 바인딩됩니다.
	return "Registration successful for " + user.getName();
}

 

  • 폼 데이터에서 입력한 값이 User 데이터 타입의 user 객체에 폼 데이터가 바인딩 된다.

 

특징

  • 자동으로 객체의 프로퍼티에 요청 파라미터를 매핑한다.
  • 특정 모델 속성을 지정할 수도 있다. (@ModelAttribute("user") User user와 같이)
  • 객체의 유효성 검사를 수행할 수 있도록 설정할 수 있다.