[Spring] MVC 패턴 웹 페이지 9(完) - RedirectAttributes 적용

2025. 6. 25. 15:38·Project/Web

리다이렉트까지는 완벽하게 적용했다.

이제 사용자가 상품을 저장하면 "저장 되었습니다" 라는 메시지를 보여주도록 사용자 친화적 수정을 해보도록 하겠다 !

 

[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
'Project/Web' 카테고리의 다른 글
  • [Spring] MVC 패턴 웹 페이지 8 - PRG 패턴 적용하기 (새로고침 문제)
  • [Spring] MVC 패턴 웹 페이지 7 - 상품 수정 하기 + 리다이렉션 처리
  • [Spring] MVC 패턴 웹 페이지 6 - 상품 등록 처리하기 @ModelAttribute
  • [Spring] MVC 패턴 웹 페이지 5 - 상품 등록 폼
xuv2
xuv2
집에 가고 싶다
  • xuv2
    xuvlog
    xuv2
  • 전체
    오늘
    어제
    • 전체 글 모아보기 (169) N
      • 잡담 (9)
      • 도전 , 자격증 (2)
      • Error (5) N
      • Java (23)
      • Spring (38) N
        • Core (10)
        • MVC (20)
        • Thymeleaf (8) N
      • DataBase (6)
        • Database Modeling (4)
        • SQL (2)
      • HTTP (11)
      • Network (17)
      • Software Engineering (3)
      • Operating System (3)
      • Algorithm (16)
      • Project (18)
        • Web (9)
        • iOS (8)
        • Python (1)
      • A.I (13)
      • Linux (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
xuv2
[Spring] MVC 패턴 웹 페이지 9(完) - RedirectAttributes 적용
상단으로

티스토리툴바