작성
·
212
1
상품 상세(조회)와 상품 수정(조회)는 로직이 같기 때문에
이전에 배웠던 다중맵핑을 사용하면 될 것 같은데요
@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/editForm";
}
@GetMapping("/{itemId}")
public String item(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/item";
}
다중맵핑을 한 후 템플릿은 조건에 따라 다르게 지정하고 싶은데
조건문 말고 다른 좋은 방법은 없나요?
맵에 넣어서 하고 싶은데
@PathVariable로 URL이 변하니까 안될 것 같고요
실무에선 이런 경우에 어떻게 처리하는지 궁금합니다.
@GetMapping({"/{itemId}", "/{itemId}/edit"})
public String item(@PathVariable long itemId, Model model, HttpServletRequest request) {
Item findItem = itemRepository.findById(itemId);
model.addAttribute("item", findItem);
String viewName = "basic/item";
if(request.getRequestURI().endsWith("edit"))
viewName = "basic/editForm";
return viewName;
}
댓글 감사합니다. 예시의 수정이라는 말이 혼동을 드린 것 같은데 둘은 같은 조회입니다.
물론 상품 상세조회와 수정을 위한 조회를 목적으로 구분지어 나눌 수 있겠으나
위는 이해를 돕기위한 예시이고...
질문의 요지는 @PathVariable을 사용한 다중맵핑에
URL별 템플릿 이름의 리턴 방법이 조건문으로 처리하는 것 외에 스프링만의 편의기능이 있는지요..
@RequestMapping( {"/{itemId}", "/{itemId}/XXX", "/{itemId}/YYY"} )
/{itemId} -> "basic/items"
/{itemId}/XXX ->"basic/item"
/{itemId}/YYY -> "baisic/items"