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

+ Recent posts