[Spring] How - RedirectAttributes - addFlashAttribute()

하쮸·2025년 7월 10일
0

Error 또는 Why & How

목록 보기
20/43

1. RedirectAttributes - addFlashAttribute()

  • RedirectAttributes 객체로 리다이렉트 페이지에서 사용할 데이터를 남길 수 있음.

    • RedirectAttributes를 활용하려면 메서드의 매개변수로 받아와야함.
  • RedirectAttributes 객체addFlashAttribute()메서드를 활용하면 리다이렉트 시점에 한 번만 사용할 데이터를 등록할 수 있음.

    • 즉, 한 번 쓰고 사라지는 휘발성 데이터를 등록하는 것.

↓ 형식

객체명.addFlashAttribute(넘겨 주려는 키 문자열, 넘겨 주려는 값 객체)
  • RedirectAttributesaddFlashAttribute()메서드는 내부적으로 HttpSession을 이용하여 일시적으로 데이터를 저장하고 리다이렉트 이후에 한 번 사용되면 자동으로 세션에서 제거됨.

2. Ex

    @GetMapping("/articles/{id}/delete")
    public String delete(@PathVariable Long id, RedirectAttributes rttr) {      // 데이터 삭제.
        Article target = articleRepository.findById(id).orElse(null);
        if (target != null) {
            articleRepository.delete(target);
            // 넘겨주려는 키 문자열(msg), 넘겨 주려는 값 객체(삭제 완료.)
            rttr.addFlashAttribute("msg", "삭제 완료.");
        }
        return "redirect:/articles";
    }
  • msg에 담긴 삭제 완료메시지는 반환하는 뷰 페이지에서 사용함.
    • 즉, 리다이렉트 되는 /articles 페이지에서 보여줌.

2-1. Mustache.

<!--  삭제 완료 메시지 알림  -->
{{#msg}}
<div class="alert alert-primary alert-dismissible">
    {{msg}}
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{{/msg}}
  • {{#msg}} ~ {{/msg}}으로 msg 키를 사용할 범위를 잡음.
  • 메시지 창(alert)으로 msg에 담긴 값을 출력하고 닫기 버튼을 추가.


2-2. Thymeleaf.

<!-- 메시지가 존재할 때만 표시 -->
<div th:if="${msg}" class="alert alert-primary alert-dismissible">
    <span th:text="${msg}"></span>
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<div th:if="${msg}" class="alert alert-primary alert-dismissible fade show" role="alert">
    <span th:text="${msg}"></span>
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>

class 속성 차이

항목첫 번째 코드두 번째 코드
class 값alert alert-primary alert-dismissiblealert alert-primary alert-dismissible fade show
  • 추가된 클래스 : fade show
    • 알림창을 닫을 때 애니메이션을 적용.
  • 즉, 두 번째 코드는 알림창이 부드럽게 나타났다 사라지는 애니메이션 효과가 적용됨.

3. 참고.

profile
Every cloud has a silver lining.

0개의 댓글