-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
petclinic에서 @ModelAttribute 관련 질문 드립니다.
21.03.01 19:34 작성 조회수 85
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;
}
}
답변을 작성해보세요.
0
백기선
지식공유자2021.03.03
네, 사실상 initCreationForm에 있는 Owner owner에 파라미터에 @ModelAttribute("owner")이 생략되어 있는겁니다.
답변 1