728x90
반응형
1. @RequestParam 이용
@PostMapping("/add")
public String addItemV1(@RequestParam String itemName,
@RequestParam int price,
@RequestParam Integer quantity,
Model model){
Item item = new Item();
item.setItemName(itemName);
item.setPrice(price);
item.setQuantity(quantity);
itemRepository.save(item);
model.addAttribute("item", item);
return "/basic/item";
}
@RequestParam String itemName
:itemName
요청 파라미터 데이터를 해당 변수에 받는다.Item
객체를 생성하고 set을 사용하여 받아온 데이터를 넣어준 뒤, 저장된 item을 model에 담아서 view로 넘겨준다.
2. @ModelAttribute 이용 ← @Requestparam을 한번에!
@PostMapping("/add")
public String addItemV2(@ModelAttribute("item") Item item){
// Item item = new Item();
// item.setItemName(itemName);
// item.setPrice(price);
// item.setQuantity(quantity);
itemRepository.save(item);
// model.addAttribute("item", item);
return "/basic/item";
}
@ModelAttribute
를 이용하면 객체의 각 속성들을 하나하나 담을 필요 없이 바로Item
객체를 생성해서 요청 파라미터의 값을 프로퍼티 접근법(setXxx)으로 입력해준다.@ModelAttribute(”item”)
은model.addAttribute(”item”, item)
을 의미한다. 이처럼@ModelAttribute
는 model에 지정한 객체를 자동으로 넣어준다.
3. @ModelAttribute 이름 생략 가능
@PostMapping("/add")
public String addItemV3(@ModelAttribute Item item){
// 클래스 이름이 Item -> item 으로 model에 들어감
itemRepository.save(item);
return "/basic/item";
}
- view에 넘겨줄 때, 클래스 이름에서 맨 앞의 글자만 소문자로 바꿔서 넘겨준다.
- ex)
Item
→item
으로 바꿔서 view에 넘겨주기 때문에 (”item”)은 생략 가능하다.
4. @ModelAttribute 생략 가능
@PostMapping("/add")
public String addItemV4(Item item){
// string, int 같은 단순 타입이 오면 @RequestParam이 자동 적용하므로 생략 가능
// 객체의 경우 @ModelAttribute가 자동으로 적용하므로 생략 가능
itemRepository.save(item);
return "/basic/item";
}
- 아예
@ModelAttribute
도 생략 가능하다. 대상 객체는 model에 자동 등록된다.
728x90
반응형
댓글