Spring
[Spring] RedirectAttributes
동그리담
2024. 5. 8. 17:19
@PostMapping("/add")
public String addItemV3(@ModelAttribute("item") Item item) {
itemRepository.save(item);
return "redirect:/basic/items/" + item.getId();
}
redirect에서 +item.getId() 처럼 URL에 변수를 더해서 사용하는 것은 URL 인코딩이 안되기 때문에 위험하다.
이를 해결하기 위한 RedirectAttributes를 알아보도록 하자.
RedirectAttributes
사용자 요구사항 추가 : 저장 된 경우, 완료 메시지 보여주기
- 매개변수로 RedirectAttributes 를 넣어준다.
- .addAttribute메서드를 사용해서 "itemId"를 저장.
- redirectAttributes.addAttribute("itemId", savedItem.getId());
- addAttribute메서드를 사용해서 "status"이름으로 boolean값 지정
- redirectAttributes.addAttribute("status", true);
이렇게 하면
@PostMapping("/add")
public String addItemV6(Item item, RedirectAttributes redirectAttributes) {
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());
redirectAttributes.addAttribute("status", true);
return "redirect:/basic/items/{itemId}";
}
위와 같이 사용 가능하다!
여기서 사용안한 status 같은 경우 url에 쿼리 파라미터 ?status=true 와 같이 들어가게 된다.
<!-- -->
<h2 th:if="${param.status}" th:text="저장 완료!"></h2>
RedirectAttributes 를 사용하면 URL 인코딩도 해주고, pathVariable , 쿼리 파라미터까지 처리해준다
출처: https://tan-sog.tistory.com/90