RedirectAttributes

less than 1 minute read

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>


결과는 다음과 같다.

5.png

Categories:

Updated:

Leave a comment