본문 바로가기

웹/spring

redirect 시 attribute 전달

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 는 휘발성이 있다는 것이다. 리다이렉트 이후에는 사라진다.

' > spring' 카테고리의 다른 글

@ModelAttribute , @RequestParam , RedirectAttributes  (0) 2021.08.26
spring --12.스프링 시큐리티  (0) 2021.03.03
spring --13 트랜잭션  (0) 2021.02.26
spring --11. RESTful API  (0) 2021.02.25
spring --11.예외처리  (0) 2021.02.22