• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

petclinic에서 @ModelAttribute 관련 질문 드립니다.

21.03.01 19:34 작성 조회수 80

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;
}
}

답변 1

답변을 작성해보세요.

0

네, 사실상 initCreationForm에 있는 Owner owner에 파라미터에 @ModelAttribute("owner")이 생략되어 있는겁니다.