✅ RedirectAttributes
RedirectAttributes
를 사용하면 URL 인코딩 + 쿼리 파라미터까지 처리해줌 @PostMapping("/add")
public String addItemV6(Item item, RedirectAttributes redirectAttributes){ // ModelAttribute 어노테이션 자체를 생략 가능
Item saveItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId",saveItem.getId()); // 여기서 저장한 itemId가 주소값 뒤에 {itemId}로 들어감
redirectAttributes.addAttribute("status",true);
return "redirect:/basic/items/{itemId}";
}
{itemId}
?status=true
return 화면
방식 : 서버 내부에서 직접 뷰를 찾아 렌더링 + 브라우저의 URL이 변경되지 않음
redirect:url주소
방식 : 클라이언트에게 새로운 URL로 재요청하도록 지시 + 브라우저의 URL이 새로운 주소로 변경
redirect
는 주로 POST-Redirect-GET 패턴에서 사용되어 폼 재제출 문제를 방지하고, 새로고침 시 중복 처리를 막는 데 유용
✅ 뷰 템플릿 메시지 추가
<h2 th:if="${param.status}" th:text="'저장완료'"></h2>
${param.status}
: 타임리프에서 쿼리 파라미터를 편리하게 조회하는 기능