Spring/SpringMVC

RedirectAttributes

느리지만 꾸준하게 2022. 5. 5. 00:30

이제 저장이 잘 되었으면 상품 상세 화면에 "저장되었습니다."라는 메시지를 보여주게 해보자.

 

 

 

 

addItemV5에 있던 PostMapping는 주석처리 해주고

V6를 만들어 주자.

//    @PostMapping("/add")
    public String addItemV5(Item item) {
        itemRepository.save(item);
        return "redirect:/basic/items/" + item.getId();
    }

    @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를 추가해주고 

 

 

 

 

 

 

url에서 {itemId}가 3으로 치환이 되고 남은거 ?status = true는 쿼리 파라미터로 넘어간다.

http://localhost:8080/basic/items/3?status=true라는 리다이렉트 결과가 나온다.

 

 

 

 

RedirectAttributes
RedirectAttributes 를 사용하면 URL 인코딩도 해주고, pathVarible , 쿼리 파라미터까지 처리해준다.

  • redirect:/basic/items/{itemId}

 

  • pathVariable 바인딩: {itemId}

 

  • 나머지는 쿼리 파라미터로 처리: ?status=true

 

 

 

 

뷰 템플릿에서 이 값이 있다면 저장되었습니다라는 메시지를 출력해주자.

template - basic 패키지에 있는 item.html 파일로 가서 아래 구문을 추가해주면 저장완료라는 문구가 뜬다.

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

  • th:if : 해당 조건이 참이면 실행

 

  • ${param.status} : 타임리프에서 쿼리 파라미터를 편리하게 조회하는 기능

 

  • 원래는 컨트롤러에서 모델에 직접 담고 값을 꺼내야 한다. 그런데 쿼리 파라미터는 자주 사용해서 타임리프에서 직접 지원한다.

 

  • 뷰 템플릿에 메시지를 추가하고 실행해보면 "저장 완료!" 라는 메시지가 나오는 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<출처 김영한: 스프링 MVC 1편 - 벡앤드 웹 개발 핵심 기술>

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

 

 

 

 

'Spring > SpringMVC' 카테고리의 다른 글

PRG Post/Redirect/Get  (0) 2022.05.05
상품 수정  (0) 2022.05.04
상품 등록 처리 - @ModelAttribute  (0) 2022.05.04
상품 상세, 상품 등록 폼 뷰 & 컨트롤러  (0) 2022.05.03
상품 목록 - 타임리프  (0) 2022.05.03