티스토리 뷰

PRG 패턴

상품 등록 처리를 진행하는 과정에서 컨트롤러에서 오류가 발생했다.

상품을 등록하고 새로고침을 하면 여러번 중복 등록이 되는 것을 확인했다.

 

새로고침에서 오류가 나는 이유가 멀까?

 

새로고침은 이전의 URL을 다시 한번 더 실행하는 것이다.

 

그렇다면 어떻게 해결할 수 있을까?

 

마지막을 GET으로 끝내면 된다/

상품 저장 후에 뷰 템플릿으로 이동하는 것이 아니라, 상품 상세 화면으로 리다이렉트를 호출해주는 것이다.

마지막으로 화면으로 이동시켰기에 GET으로 끝나게 된다. 새로고침을 해도 GET으로 호출받을 것이다.

 

RedirectAttribute

고객이 상품을 저장하고 저장이 잘 되었는지 확인을 할 수 있는 방법이 필요하다.

고객입자에서 저장이 잘된 것인지 확인을 할 수 있도록. 상품 상세 화면에 "저장했습니다"를 표시하자.

 @PostMapping("/add")
 public String addItemV6(Item item, RedirectAttributes redirectAttributes) {
 Item savedItem = itemRepository.save(item);
    redirectAttributes.addAttribute("itemId", savedItem.getId());
    redirectAttributes.addAttribute("status", true);
 return "redirect:/basic/items/{itemId}";
 }
 <h2 th:if="${param.status}" th:text="'저장 완료!'"></h2>

실행했을 때 URL은 어떻게 나올까?

http://localhost:8080/basic/items/3?status=true

URL에 담아주지 않았던 status는 쿼리 파라미터로 빠지게 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함