• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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를 받는 핸들러만 사용 가능한건가요?

답변 3

·

답변을 작성해보세요.

0

아 PetController에 있는거군요.

네 맞습니다. 그 컨트롤러에 보면 해당 컨트롤러에 오는 모든 요청에 ownerId가  URI path에 들어있기 때문에 저렇게 쓰인거네요.

0

parkht님의 프로필

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

질문을 잘 이해를 못했습니다.

그리고 코드가 이상해서 찾아봤더니 원본 코드는 이렇네요.

    @GetMapping("/owners/{ownerId}")

    public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) 

여기서 @GetMapping 대신 @ModelAttribute로 바꾸면 어떻게 되냐고 물으시는건가요?