Model 객체는 Controller 에서 생성된 데이터를 담아 View 로 전달할 때 사용하는 객체이다.
[get 매핑]
@GetMapping("/add")
public String add(Model model) {
model.addAttribute("page", new Page() );
return "admin/pages/add";
}
<h2> Test Method : ${page} </h2>
그리고
@ModelAttribute 어노테이션을 써서 간략해질수 있다고 했다
@GetMapping("/add")
public String add(@ModelAttribute Page page) {
return "admin/pages/add";
}
근데!! get매핑에서 Model 객체를 썼을 때
@PostMapping("/add")
public String add(@Valid Page page, BindingResult bindingResult, RedirectAttributes attr, Model model) {
~~
attr.addFlashAttribute("page", page);
}
문제발생!
페이지의 슬러그가 존재하면 안지워고 문자그대로 남게 하려면
attr.addFlashAttribute("page", page);
이걸 쓰는데
안불러진다
왜??
나의 추측.
post매핑에서 return "redirect:/admin/pages/add"; 리다이렉트를 하기때문! (post-get순으로 리다이렉트)
입력한 정보를 다시 get매핑으로 리다이렉트해서 page를 받고 다시 보내지기 때문 정보 불러올 수 있다
결론
Get매핑에서 @ModelAttribute 을 써야 쓴 문자가 그대로 불러와진다
[get매핑]
public String add(Model model) {
model.addAttribute("page", new Page() );
return "admin/pages/add";
}
이렇게는 입력했던 정보를 다시 불러 올 수 없음. page를 받는게 없기때문!
반응형
LIST
'Spring boot | 쇼핑몰 만들기 | 어글리 마켓 > 홈페이지 만들기 | 고객,관리자' 카테고리의 다른 글
페이지 삭제하기 (0) | 2022.05.01 |
---|---|
페이지 수정하기 (0) | 2022.04.30 |
페이지 추가 (0) | 2022.04.30 |
페이지 만들기 (0) | 2022.04.30 |
부트스트랩 (0) | 2022.04.30 |