RedirectAttributes
RedirectAttributes
// 상품 등록
//@PostMapping("/add")
public String addItemV5(Item item, Model model) {
itemRepository.save(item);
return "redirect:/basic/items/" + item.getId();
}
“redirect:/basic/items/” + item.getId() redirect에서 +item.getId() 처럼 URL에 변수를 더해서 사용하는 것은 URL 인코딩이 안되기 때문에 위험하다. 다음에 설명하는 RedirectAttributes 를 사용하자.
@PostMapping("/add")
public String addItemV6(Item item, RedirectAttributes redirectAttributes) {
Item saveItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId",saveItem.getId());
redirectAttributes.addAttribute("status",true);
return "redirect:/basic/items/{itemId}";
}
RedirectAttributes를 이용해서 itemId를 {itemId} 맵핑하여 사용하였다.
또한 redirect를 성공적으로 했다고 알리기 위해 status를 활용하였다.
실행을 하면 아래와 같은 url이 생성된다.
http://localhost:8080/basic/items/3?status=true
이를 view에서 확인하기 위해 Thymeleaf를 활용해 다음과 같은 코드를 넣어준다.
<!--성공 메세지-->
<h2 th:if="${param.status}" th:text="'저장완료'"></h2>
결과는 다음과 같다.
Leave a comment