반응형

@ModelAttribute의 또 다른 사용법

@ModelAttribute의 사용법에서 살펴본 것과 별개로 또 다르게 사용하는 @ModelAttribute에 대해 알아보겠다.

@ModelAttribute
public void categories(Model model) {
    model.addAttribute("categories",List.of("study", "seminar", "hobby", "social"));
}

// 또는
@ModelAttribute("categories")
public List<String> categories(Model model) {
  return List.of("study", "seminar", "hobby", "social");
}
  • 위와 같이 @ModelAttribute를 사용하게되면 이 메서드를 가지는 컨트롤러 안의 모든 메서드에 model정보를 넘겨주게 된다.

  • Petclinic의 예로보면 아래와 같다.

    @Controller
    @RequestMapping("/owners/{ownerId}")
    class PetController {
    
          ...
    
        @ModelAttribute("owner")
        public Owner findOwner(@PathVariable("ownerId") int ownerId) {
            return this.owners.findById(ownerId);
        }
    
          ...
    
    }
    • 위와 같이 PetController안에 "owner"라는 @ModelAttribute가 있어서 컨트롤러 안의 모든 핸들러에서 해당 owner의 모델 정보를 사용할 수 있게된다.
반응형

BELATED ARTICLES

more