인프런 커뮤니티 질문&답변
petclinic에서 @ModelAttribute 관련 질문 드립니다.
해결된 질문
작성
·
175
0
petclinic 소스 분석해보다가 이해안가는 부분이 있어 질문드립니다. PetController의 findOwner의 modelAttribute 이름값을 owner -> petOwner 로 변경했을때 는 파라미터로 바인딩이 안되는데 @ModelAttribute("owner")처럼 클래스명의 lowerCase로 이름값을 주는 경우 Owner로 파라미터로 바인딩 해서 사용할 수 있게 되는 것이 modelAttribute의 관례 같은것인지 궁금합니다.
@Controller
@RequestMapping("/owners/{ownerId}")
class PetController {
private static final String VIEWS_PETS_CREATE_OR_UPDATE_FORM = "pets/createOrUpdatePetForm";
private final OwnerRepository owners;
public PetController(OwnerRepository owners) {
this.owners = owners;
}
@ModelAttribute("owner")
public Owner findOwner(@PathVariable("ownerId") int ownerId) {
return this.owners.findById(ownerId);
}
@GetMapping("/pets/new")
public String initCreationForm(Owner owner, ModelMap model) {
Pet pet = new Pet();
owner.addPet(pet);
model.put("pet", pet);
System.out.println("owner = " + owner);
return VIEWS_PETS_CREATE_OR_UPDATE_FORM;
}
}





