Loading...
Spring Framework Reference Documentation 7.0.2의 Model의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
See equivalent in the Reactive stack
@ModelAttribute 어노테이션을 다음과 같이 사용할 수 있습니다:
@RequestMapping 메서드에서 메서드 인자에 사용하여
모델에서 Object를 생성하거나 접근하고, WebDataBinder를 통해 요청에 바인딩하기 위해 사용합니다.@Controller 또는 @ControllerAdvice 클래스에서 메서드 수준 어노테이션으로 사용하여
어떤 @RequestMapping 메서드가 호출되기 전에 모델을 초기화하는 데 도움을 줍니다.@RequestMapping 메서드에 사용하여 해당 메서드의 반환 값이 모델 속성임을 표시합니다.이 섹션에서는 위 목록의 두 번째 항목인 @ModelAttribute 메서드에 대해 설명합니다.
컨트롤러는 임의의 개수의 @ModelAttribute 메서드를 가질 수 있습니다. 이러한 모든 메서드는
같은 컨트롤러의 @RequestMapping 메서드보다 먼저 호출됩니다.
@ModelAttribute
메서드는 유연한 메서드 시그니처를 가집니다. 이 메서드들은
@ModelAttribute 자체나 요청 본문과 관련된 것을 제외하고, @RequestMapping 메서드와
많은 동일한 인자를 지원합니다.
다음 예제는 @ModelAttribute 메서드를 보여줍니다:
1@ModelAttribute 2public void populateModel(@RequestParam String number, Model model) { 3 model.addAttribute(accountRepository.findAccount(number)); 4 // add more ... 5}
1@ModelAttribute 2fun populateModel(@RequestParam number: String, model: Model) { 3 model.addAttribute(accountRepository.findAccount(number)) 4 // add more ... 5}
다음 예제는 하나의 속성만 추가합니다:
1@ModelAttribute 2public Account addAccount(@RequestParam String number) { 3 return accountRepository.findAccount(number); 4}
1@ModelAttribute 2fun addAccount(@RequestParam number: String): Account { 3 return accountRepository.findAccount(number) 4}
name이 명시적으로 지정되지 않은 경우,
Object<br>타입을 기반으로 기본 name이 선택되며, 이는Conventions의 javadoc에서 설명합니다.<br>오버로드된addAttribute메서드를 사용하거나<br>@ModelAttribute의name속성(반환 값에 대해)을 통해 항상 명시적인 name을 지정할 수 있습니다.
또한 @RequestMapping 메서드에서 메서드 수준 어노테이션으로 @ModelAttribute를 사용할 수도 있으며,
이 경우 @RequestMapping 메서드의 반환 값은 모델 속성으로 해석됩니다. 이는 일반적으로
필요하지 않은데, HTML 컨트롤러에서 기본 동작이기 때문이며, 반환 값이 그렇지 않으면 뷰 이름으로
해석될 String인 경우는 예외입니다.
@ModelAttribute는 다음 예제와 같이 모델 속성 name을
커스터마이즈할 수도 있습니다:
1@GetMapping("/accounts/{id}") 2@ModelAttribute("myAccount") 3public Account handle() { 4 // ... 5 return account; 6}
1@GetMapping("/accounts/{id}") 2@ModelAttribute("myAccount") 3fun handle(): Account { 4 // ... 5 return account 6}
Jackson JSON
@InitBinder