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

좋은 백조님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

상품 주문

질문

해결된 질문

21.03.28 09:35 작성

·

178

1

1.

id 값이getmapping으로 넘어오는 것도 관계가 궁급합니다.

itemList.html에도 특정하게 id값을 넘겨달라 라고 보이는 문구도 없어보이는데 id값만 인자로 지정해서 넘어오는 것도 궁금합니다.

이어지는 부분이 없다고생각하는데 이런건 requestparam으로 받는게 맞지 않을까요?

public String updateItemForm(@PathVariable("itemId") Long id, Model model){
Book one = (Book) itemService.findOne(id);

선생님 이부분에서 items/createItemForm 에서 정보를 입력받으면 submit버튼을 누르는 순간 postmapping 으로 값들이 담겨져서 밑의 코드처럼 bookform 형식의 값이담긴 form이 넘어와지게 된다고 하셨는데 

booform의 클래스의 필드이름들이 html(createItemForm )태그에  타임리프 문법에 있는 name, id, isbn 등등 필드 이름과 매칭이 돼서 넘어오는줄 알았는데 bookform클래스의 필드 이름이 다르게 바껴도 값이 넘어오더라고요.... 어떻게 매칭이 되고 어떤 관계가 있어서 bookform에 잘 맞춰서 넘어오게되는지 궁금합니다.

@PostMapping("/items/new")
public String create(BookForm form){
Book book = new Book();
book.setName(form.getName());
book.setPrice(form.getPrice());
book.setStockQuantity(form.getStockQuantity());
book.setAuthor(form.getAuthor());
book.setIsbn(form.getIsbn());

itemService.saveItem(book);
return "redirect:/";
}

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

2021. 03. 28. 21:23

안녕하세요. 규영님

질문1

@PathVariable, @RequestParam 둘중 아무 값으로 받아도 됩니다.

@PathVariable은 /items/{itemId} 처럼 되어 있는 매핑에 있는 값을 꺼내어 올 수 있습니다.

/items/100 이 경우 100 값을 꺼내어 옵니다.

이 부분에 대한 자세한 내용은 MVC 강의에서 설명드립니다^^

질문2

자바빈 프로퍼티 방식으로 데이터가 입력됩니다.

예를 들어서 name이라는 이름으로 넘어오면 setName(...)이 호출되고 여기에 값이 넘어갑니다.

필드 이름이 아니라 메서드 이름을 기준으로 넘어가는 것이지요.

관련해서 자바빈 프로퍼티로 검색해보시면 금방 답을 찾으실 수 있을거에요.

감사합니다.