RedirectAttribute

이경현·2024년 11월 6일

RedirectAttribute :

리디렉션을 수행할 때 한 컨트롤러 메서드에서 다른 컨트롤러 메서드로 Attribute(속성) 을 전달할 때 이용하는 스프링 프레임워크의 인터페이스

RedirectAttribute가 필요한 경우 :

주문이 완료된 후 주문 결과 상세페이지로 리다이렉팅하고 그 결과를 보여주고 싶을 때 이용할 수 있다.
주문 처리가 끝났을 때 생성된 주문번호를 리다이렉트 페이지쪽으로 넘겨줄 수 있다.

redirectAttributes 를 이용하여 데이터를 넘길 수 있는 2가지 메서드이다.

- addAttribute :

브라우저의 주소창에 보이게 URL 에 추가하여 정보를 넘긴다.
주소창에 보이는 만큼 짧은 정보, 이용자에게 노출되어도 상관 없는 정보를 넘기는데에 주로 사용한다.
쿼리 파라미터가 있는 URL 에 접근하는 한 여러 요청에 사용이 가능하다.
/targetURL?key=value 형식으로 전달된다.

- addFlashAttribute :

세션에 저장되고 오직 다음 요청에서만 접근 가능하다.
임시로 저장하는 방식이다.
세션에 저장되어 사용된 뒤에 자동으로 삭제된다.
검증 결과, 성공 실패 여부 메세지와 같이 임시로 사용되는 데이터를 다루는데 적합하다.
또 주소 창에 표기되지 않으므로 addAttribute() 보다 폐쇄적이다.

RedirectAttributes 로 넘긴 데이터 접근하기

addAttribute() 로 넘겼는지 addFlashAttribute() 로 넘겼는지에 따라 접근 방식이 달라진다.
addAttribute() 로 넘겼다면, URL 로 넘어온만큼 기존처럼 @RequestParam 애노테이션을 이용하면 된다.
addFlashAttribute() 로 넘겼다면, @ModelAttribute 애노테이션을 이용하면 된다.
아니면 그냥 Model 오브젝트를 파라미터에서 이용하고 model.getAttribute() 를 이용해도 된다.

0개의 댓글