Spring/Spring MVC

RedirectAttributes

100win10 2020. 6. 22. 01:54

 

  • 일반적으로 redirect 할 때 어떤 데이터를 모델에 넣는다면
  • 모델에 들어있는 데이터 중 primitive 타입은 자동으로 URI path에 
  • 쿼리 파라미터로 추가가 되게 된다.

 

 

 

  • 예를 들어 hello에 Id가 1이고 Name이 Baek이라면
  • return 값은 "redirect:/hello/list? id=1&name=Baek" 이 되게 되지만
  • 이러한 설정은 스프링 부트에서는 기본적으로 꺼져있다.

 

  • 다음과 같이 설정을 해주게 되면

 

  • 이제 모델에 들어있던 primitive 타입들이 자동으로 쿼리 파라미터로 붙게 된다.
  • 이렇게 되면 redirect 되는 주소 쪽에서 @RequestParam, @ModelAttribute 를 통해 해당 값들을 받을 수가 있다.

 

 

 

이때 모델에 들어있는 모든 데이터가 아닌 일부만 명시적으로 보내고 싶다면?

 

1. application.properties에 설정을 제거한다.

 

2. model 대신 RedirectAttributes를 사용한다.

 

 

  • redirectAttribute를 이용하면 properties 설정 없이도
  • 우리가 명시한 name 데이터만 쿼리 파라미터를 통해  붙게 된다.

 

 

 

 

  • 이제 해당 데이터를 RequestParam으로 받아서 화면으로 띄워보자.

 

 

 

  • 다음과 같이 ModelAttribute를 통해 쿼리 파라미터에 데이터를
  • Hello 객체에 바인딩해서 사용할 수도 있다.
  • newHello로 네임을 따로 준 이유는 저번에 SessionAttributes 사용으로 먼저 만료된 세션을 찾기 때문이다.