RedirectAttribute

JeongHoHyun·2025년 2월 8일

Spring MVC

목록 보기
8/21

RedirectAttribute

  • Spring MVC에서 리다이렉트할 때 데이터를 함께 전달할 수 있도록 도와주는 객체이다.
  • 즉, 리다이렉트하면서 데이터를 유지하고 싶을 때 사용한다.
  • URL 인코딩과 pathVariable, 쿼리 파라미터까지 처리해준다.
  • 보통 redirect:/url을 하면 새로운 요청이 발생하기 때문에 기존 요청의 데이터가 사라진다.
  • RedirectAttributes를 사용하면 일회성으로 데이터를 전달할 수 있다.

사용법

@PostMapping("/save")
public String saveItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes) {
   Item savedItem = itemRepository.save(item);
   redirectAttributes.addAttribute("itemId", savedItem.getId());
   redirectAttributes.addFlashAttribute("message", "아이템이 성공적으로 저장되었습니다!");

   return "redirect:/basic/items/{itemId}"; // itemId 값이 자동으로 바인딩됨
}
  • redirectAttributes.addAttribute("itemId", savedItem.getId());
    • URL의 경로변수{} 에 들어갈 값을 추가한다.
  • redirectAttributes.addFlashAttribute("message", "아이템이 성공적으로 저장되었습니다!");
    • 일회성 데이터를 전달한다. (새로운 요청이 끝날 때까지 유지됨)
  • return "redirect:/basic/items/{itemId}";
    • {itemId}에 자동으로 savedItem.getId() 값이 들어감.

addAttribute() vs addFlashAttribute()

addAttribute()

  • 사용방법
    • addAttribute("key", value)
  • 설명
    • URL에 변수 전달
  • 유지 범위
    • URL에 남음

addFlashAttribute()

  • 사용방법
    • addFlashAttribute("key", value)
    • 리다이렉트된 컨트롤러에서 값을 받아서 사용할 수 있다.
@GetMapping("/basic/items/{itemId}")
public String itemDetail(@PathVariable Long itemId, Model model, @ModelAttribute("message") String message) {
    model.addAttribute("item", itemRepository.findById(itemId));
    return "itemDetail"; // Thymeleaf 템플릿
}
  • @ModelAttribute("message") String message 를 통해서 사용한다.
  • 설명
    • 일회성 메시지 전달
  • 유지 범위
    • 새로운 요청이 끝날 때 까지 유지된다.

🧹 정리

  • 쿼리 파라미터나 URL 경로 변수로 데이터를 넘기려면 addAttribute()사용
  • 새로운 요청에서도 유지하고 싶다면 addFlashAttribute()사용
  • FlashAttribute는 한번 사용하면 자동으로 사라짐
profile
Java Back-End 2022.11.01 💻~ing

0개의 댓글