-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
PetClinic에서 @ModelAttribute와 @PathVariable
19.11.06 21:35 작성 조회수 301
0
안녕하세요. PetClinic 소스를 보다가 질문이 있어서 올립니다.
@ModelAttribute("owner")
public Owner findOwner(@PathVariable("ownerId") int ownerId) {
return this.owners.findById(ownerId);
}
이와 같은 코드면, Controller에 있는 핸들러 중@PathVariable로 ownerId를 받는 핸들러만 사용 가능한건가요?
답변을 작성해보세요.
0
백기선
지식공유자2019.11.07
아 PetController에 있는거군요.
네 맞습니다. 그 컨트롤러에 보면 해당 컨트롤러에 오는 모든 요청에 ownerId가 URI path에 들어있기 때문에 저렇게 쓰인거네요.
0
parkht
질문자2019.11.07
앗! 아닙니다.
PetController.java 에
@ModelAttribute("owner")
public Owner findOwner(@PathVariable("ownerId") int ownerId) {
return this.owners.findById(ownerId);
}
이와 같은 코드가 있는데요.
강의를 듣고 @ModelAttribute가 해당 메소드처럼 사용되면, 컨트롤러에 모든 핸들러에 owner를 view로 보낸다고 이해를 했습니다. 여기에 @PathVariable이 있는 경우는 어떤 의미로 동작하는지에 대해 물어본 것이었습니다.
0
백기선
지식공유자2019.11.07
질문을 잘 이해를 못했습니다.
그리고 코드가 이상해서 찾아봤더니 원본 코드는 이렇네요.
@GetMapping("/owners/{ownerId}")
public ModelAndView showOwner(@PathVariable("ownerId") int ownerId)
여기서 @GetMapping 대신 @ModelAttribute로 바꾸면 어떻게 되냐고 물으시는건가요?
답변 3