웹/spring
redirect 시 attribute 전달
밍래그로프
2021. 5. 21. 15:00
redirect 가 GET 메소드를 사용한다.
redirect를 명령하면 GET 메소드를 사용하여 새로운 요청을 보내기 때문에
리다이렉트 후에 모델을 보내도 소용이 없다.
대표적으로 두가지 방법이 있다.
1. addAttribute
1
2
3
4
5
6
7
8
9
|
@PostMapping("/aaa")
public String insert(ModelMap model, RedirectAttributes rttr) throws Exception{
String message ="등록되었습니다.";
rttr.addAttribute("message", message);
return "redirect:/aaa/bbb";
}
//결과 /aaa/bbb/?message=등록되었습니다. |
cs |
아래와 같이 addAttribute 에 String 문자열을 넣어 전달할 수 있다.
String 문자열을 넣어 전달하면, 아래와 같은 형태가 된다.
(String 문자열을 통해 여러개의 변수와 데이타도 전달이 가능하다.)
데이터가 URI에 노출된다는 문제가 있다.
2.addFlashAttribute
1
2
3
4
5
6
7
8
9
|
@PostMapping("/aaa")
public String insert(ModelMap model, RedirectAttributes rttr) throws Exception{
String message ="등록되었습니다.";
rttr.addFlashAttribute("message", message)
return "redirect:/aaa/bbb";
}
|
cs |
리다이렉트가 발생하기 전에 모든 플래시 속성을 세션에 복사한다.
리다이렉트 이후에 세션에 있는 플래시 속성을 다시 모델로 옮긴다.
flash 는 휘발성이 있다는 것이다. 리다이렉트 이후에는 사라진다.