리다이렉트까지는 완벽하게 적용했다.
이제 사용자가 상품을 저장하면 "저장 되었습니다" 라는 메시지를 보여주도록 사용자 친화적 수정을 해보도록 하겠다 !
[Spring] MVC 패턴 웹 페이지 8 - PRG 패턴 적용하기 (새로고침 문제)
[Spring] MVC 패턴 웹 페이지 7 - 상품 수정 하기 + 리다이렉션 처리이번에는 저장된 상품을 수정해보자 ! [Spring] MVC 패턴 웹 페이지 6 - 상품 등록 처리하기 @ModelAttribute이번에는 @ModelAttribute를 통해 실
bdisappointed.tistory.com
컨트롤러 수정
리다이렉트시 status라는 파라미터를 하나 추가해서 보내보자.
그래서 status 가 true면 잘 저장이 되었다고 판단하도록 해보자.
package hello.itemservice.web.basic;
import hello.itemservice.domain.item.Item;
import hello.itemservice.domain.item.ItemRepository;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.util.List;
@Controller
@RequestMapping("/basic/items")
@RequiredArgsConstructor
public class BasicItemController {
private final ItemRepository itemRepository;
@GetMapping
public String items(Model model) {
List<Item> items = itemRepository.findAll();
model.addAttribute("items", items);
return "basic/items";
}
@GetMapping("/{itemId}")
public String item(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/item";
}
@GetMapping("/add")
public String addForm() {
return "basic/addForm";
}
@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}";
}
@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/editForm";
}
@PostMapping("/{itemId}/edit")
public String edit(@PathVariable Long itemId, @ModelAttribute Item item) {
itemRepository.update(itemId, item);
return "redirect:/basic/items/{itemId}";
}
// 테스트용 데이터
@PostConstruct
public void init() {
itemRepository.save(new Item("itemA", 10000, 10));
itemRepository.save(new Item("itemB", 20000, 20));
itemRepository.save(new Item("itemC", 30000, 30));
}
}
RedirectAttribute를 사용하자 !
V6 메서드를 보면 itemId는 치환할 공간이 보인다. 그럼 status는?
status 필드도 쿼리 파라미터로 URL이 만들어져 리다이렉션이 일어나게 된다 !
뷰 수정
<!-- 추가 : 파라미터 그냥 꺼내 쓸 수 있음 -->
<h2 th:if="${param.status}" th:text="'저장완료'"></h2>
리다이렉션이 일어나는 뷰에 해당 코드를 추가해주면 status의 파라미터 값에 따라 저장 완료를 띄울 수 있다
결과
위 사진 처럼 status가 true 면 저장 완료라는 글자가 뜨는 것을 확인할 수 있다 !
마치며
이번에 간단한 상품 관리를 만들어보며 결국에는 URL을 잘 이어주고 리다이렉션 시키는 것이 MVC를 적용한 좋은 웹 페이지 임을 알게 되었다.
앞으로 진행할 프로젝트에도 배웠던 개념들을 잘 적용하여 좋은 프로젝트 만들어보자 !
'Project > Web' 카테고리의 다른 글
[Spring] MVC 패턴 웹 페이지 8 - PRG 패턴 적용하기 (새로고침 문제) (0) | 2025.06.25 |
---|---|
[Spring] MVC 패턴 웹 페이지 7 - 상품 수정 하기 + 리다이렉션 처리 (0) | 2025.06.25 |
[Spring] MVC 패턴 웹 페이지 6 - 상품 등록 처리하기 @ModelAttribute (0) | 2025.06.25 |
[Spring] MVC 패턴 웹 페이지 5 - 상품 등록 폼 (0) | 2025.06.25 |
[Spring] MVC 패턴 웹 페이지 4 - 상품 상세 페이지 (0) | 2025.06.25 |