[spring] RedirectAttributes & ModelAttribute
by mini_min[spring] RedirectAttributes & ModelAttribute
✔️ RedirectAttributes
: 리다이렉트된 페이지에 값을 넘길 때 사용한다.
: 리다이렉트된 후 즉시 사라지는 것이 특징이다.
: 쿼리스트링(GET방식 파라미터)을 사용하지 않고 임시 메모리를 사용하여 보이지 않게 리다이렉트된 페이지에 값을 보낼 수 있다.
👩💻 ex06 예제
- RedirectAttributes 를 붙여서 리다이렉트 되는 ex06의 페이지에 값을 넘긴다.
- addFlashAttribute 와 함께 사용한다.
@PostMapping("request")
public String submit(User dto, final RedirectAttributes rAttr) {
String s = dto.getAge() >=19 ? "성인" : "미성년자";
rAttr.addFlashAttribute("dto", dto);
rAttr.addFlashAttribute("msg", s);
//포워딩 XX 리다이렉트 해준다. 두번요청되기 때문에 리다이렉트 해줘야함
return "redirect:/ex06/complete";
}
✔️ @ModelAttribute
: 리다이렉트한 페이지에서 RedirectAttributes에 보낸 정보를 넘겨 받을 수 있다.
: @ModelAttribute ("dto") 는 가로 안에 dto 를 뒤에 오는 인자에 넣으라는 뜻이다.
- RedirectAttributes 로 dto 와 msg 를 넘겼기 때문에 두 개의 정보를 넘겨받을 수 있게 된 것이다.
- @ModelAttribute("dto") 가 없으면 아래는 모두 null 이다.
@GetMapping("complete")
public String complete(@ModelAttribute("dto") User dto) {
//@ModelAttribute("dto") 가 없으면 아래는 모두 null 이다.
System.out.println(dto.getName() + " : " + dto.getId());
return "ex06/result";
}
✔️ @ModelAttribute (2)
1) 개요
: Controller 메소드의 매개변수나 리턴값을 Model 객체와 바인딩하기 위해 사용
: @ModelAttribute 는 실제적으로 ModelMap.addAttribute("이름", "값")와 같은 기능
2) 요청 메소드의 매개변수에 사용
: 요청 파라미터는 @ModelAttribute 가 적용된 메소드의 파라미터(모델 객체)에 맵핑 되어 넘어온다.
: @ModelAttribute 적용된 메소드의 매개변수는 포워딩 되는 View 페이지에서 사용 가능
3) 메소드 레벨(메소드 위)로 사용한다.
: View 에 사용할 데이터를 설정할 용도로 사용한다.
: @ModelAttribute 가 설정된 메소드는 @RequestMapping 이 적용된 메소드보다 먼저 호출
: @ModelAttribute 메소드 실행 결과로 리턴되는 객체는 자동으로 Model에 저장
: @ModelAttribute 메소드 실행 결과로 리턴된 객체를 View 페이지에서 사용 가능
👩💻 ex11 예제
- 둘이 동일하다.
@PostMapping("write")
public String submit(User dto, Model model) {
model.addAttribute("dto", dto);
return "ex11/result";
}
@PostMapping("write")
public String submit(@ModelAttribute("dto") User dto) {
return "ex11/result";
}
- 메소드의 매개변수에 HttpServletRequest 등의 사용도 가능하다.
//메소드의 매개변수에 HttpServletRequest 등의 사용도 가능하다.
@ModelAttribute("memberTypes")
public List<String> getMemberTypes() throws Exception {
List<String> list = new ArrayList<String>();
list.add("일반회원");
list.add("기업회원");
list.add("특별회원");
return list;
}
'Spring' 카테고리의 다른 글
[spring] @RequestBody & @RequestBody (JSON) (0) | 2022.11.14 |
---|---|
[spring] @SessionAttributes 세션 (0) | 2022.11.14 |
[spring] List 배열로 요청 파라미터 받기 (0) | 2022.11.14 |
[spring] RequestParam (0) | 2022.11.14 |
[spring] REST 개념 (0) | 2022.11.14 |
블로그의 정보
개발자 미니민의 개발로그
mini_min