Hansel
5. 스프링 MVC / 기타 본문
ModelAttribute

ModelAtrribute는 파라미터에 맞는 객체를 받아와서 생성한다.
위 사진의 과정은 다음과 같다.
- 폼에서 데이터 보냄
- ModelAttribute로 객체 생성해서 service로 위임
- service에서 업데이트 작업 수행 (Transactional 처리 필수)
- item객체 내부에서 데이터 변경
- JPA에서 변경감지
- 데이터 수정
POST 이후 새로고침의 문제

** 포스트를 보낸 직후는 아직 내가 post한 데이터를 그대로 지니고있다. **
** 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송한다. **
상품 등록 폼에서 데이터를 입력하고 저장을 선택하면 POST /add + 상품 데이터를 서버로 전송한다.
이 상태에서 새로 고침을 또 선택하면 마지막에 전송한 POST /add + 상품 데이터를 서버로 다시 전송하게
된다.
그래서 내용은 같고, ID만 다른 상품 데이터가 계속 쌓이게 된다.
해결 방법은?
=> 리다이렉트를 해야한다.
그러면 Get을 이용하여 해당 페이지로 가기 때문에 Post를 새로고침하지 않는다.

리다이렉션 보충
=> 성공적으로 POST 과정이 해결되었음을 알리고 싶다면?
redirectAttributes를 사용한다.

리다이렉션 하는 페이지에서 Attribute를 추가할 수 있고 이와 더불어

타임리프에서 해당 파라미터를 꺼내서 직접 사용할 수 있다.
'Spring > MVC' 카테고리의 다른 글
| 검증 처리 / BindingResult (0) | 2022.03.29 |
|---|---|
| 6. 메세지와 국제화 (0) | 2022.03.29 |
| 4. 스프링 MVC / 타임리프 기본 (0) | 2022.03.26 |
| 3. 스프링 MVC 기본 기능 2 (0) | 2022.03.26 |
| 2. 스프링 MVC 기본 기능 1 (0) | 2022.03.26 |