강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

jack k님의 프로필 이미지
jack k

작성한 질문수

스프링 웹 MVC

모델 @ModelAttribute

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

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

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

jack k님의 프로필 이미지
jack k

작성한 질문수

질문하기