[Spring] RedirectAttribute

·2024년 3월 23일

Spring

목록 보기
7/26
post-thumbnail

💡RedirectAttribute

  • 가령, 쇼핑몰 사이트에서 상품을 등록했을 때, 상품을 저장하고 상품 상세화면으로 redirect를 한다고 치자.
  • 상품은 잘 저장되었지만 고객 입장에서는 저장이 잘 된 것인지 안 된 것인지 확신이 들지않는다.
  • 그래서 저장이 잘 되었으면 상품 상세 화면에 "저장완료"라는 메시지를 보여주고 싶다.
  • 또한, forward와 달리 redirect의 경우, 지정된 주소로 새로운 HTTP GET 요청이 시작되기 때문에 실행 이전에 수행된 모델 데이터가 소멸한단.
  • 따라서 redirect를 할 때는 Request 객체나 Model 객체에 데이터를 담아도 전달되지 않는다.

    이 때 사용하는 게 RedirectAttribute 이다.

📗RedirectAttribute 사용법

컨트롤러

    @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}";
    }

상품페이지

<h2 th:if "${param.status}" th:text="'저장 완료'"><h2>

실행해보면 다음과 같은 리다이렉션 결과가 나온다.
➡️http://localhost:8080/basic/items/3?status=true

📌RedirectAttribute을 사용하면?
1. URL인코딩을 자동으로 해준다.
2. pathVariable 처리를 해준다.
3. 쿼리 파라미터를 처리해준다.

  • redirect:/basic/items/{itemId}
    ➡️pathVariable 바인딩 : itemId
    ➡️나머지는 쿼리 파라미터로 처리 : ?status=true
profile
배우고 기록하며 성장하는 백엔드 개발자입니다!

0개의 댓글