본문 바로가기
Spring Tutorial

[스프링MVC -상품 관리 웹 개발 8] RedirectAttributes

by 미소5 2023. 9. 4.

[스프링MVC 상품 관리 웹 페이지 7] PRG - Post/Redirect/Get (tistory.com)

 

[스프링MVC 상품 관리 웹 페이지 7] PRG - Post/Redirect/Get

[스프링MVC 상품 관리 웹 페이지 5] 상품 등록 처리 - @ModelAttribute (tistory.com) [스프링MVC 상품 관리 웹 페이지 5] 상품 등록 처리 - @ModelAttribute [스프링MVC - 상품 관리 웹 페이지 만들기 4] 상품 등록 폼

joly156.tistory.com

상품 등록 처리 이후에 상품 상세 화면으로 리다이렉트하도록 코드를 작성해보았다. 그런데 고객 입장에서는 저장이 잘 된 것인지 안 된 것인지 확신이 들지 않는다.

상품 저장이 잘 되었으면, 상품 상세 화면에 "저장 완료!" 라는 메시지가 나오도록 해보자.

 


  • 컨트롤러 로직 추가
/**RedirectAttributes*/
    @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=true 를 추가
    • 뷰 템플릿에서 이 값이 있으면, 저장 완료! 라는 메시지를 출력해보자
  •  RedirectAttributes  를 사용하면 URL 인코딩도 해주고, pathVarible , 쿼리 파라미터까지 처리해준다.
    •  redirect:/basic/items/{itemId} 
      • pathVariable 바인딩: {itemId}
      • 나머지는 쿼리 파라미터로 처리: ?status=true
    • 실행해보면 다음과 같은 리다이렉트 결과가 나온다.
      • http://localhost:8080/basic/items/3?status=true

 


  • 뷰 템플릿에  메시지 추가 
    • /resources/templates/basic/item.html
<h2 th:if="${param.status}" th:text="'저장 완료!'"></h2>
  •  th:if  : 해당 조건이 참이면 실행
  •  ${param.status}  : 타임리프에서 쿼리 파라미터를 편리하게 조회하는 기능  (원래는 컨트롤러에서 모델에 직접 담고 값을 꺼내야 하는데, 쿼리 파라미터는 자주 사용해서 타임리프에서 직접 지원)

 

 

[스프링MVC 상품 관리 웹 페이지 3] 상품 상세 (tistory.com)

 

[스프링MVC 상품 관리 웹 페이지 3] 상품 상세

컨트롤러 로직 추가 /** 상품 상세(조회) */ @GetMapping("/{itemId}") public String item(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); //PathVariable 로 넘어온 상품ID로 item 조회하고 model.addA

joly156.tistory.com

 

728x90
반응형