인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

서수민님의 프로필 이미지
서수민

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

상품 수정

th: item 질문이있어요

작성

·

218

0

html에서 th:value에서 item을 가져올때 이전에

add item에서도 model.addAttribute("item",item)으로 저장하고 editForm에서도 model.addAttribute("item",item)으로 저장하는데 html에서 타임리프가 item을 가져올때 어떻게 1번아이템인지 2번아이템인지 구분하고 값을 가져오는건가요?

 

답변 1

0

안녕하세요. 서수민님, 공식 서포터즈 OMG입니다.

1-수정하려는 아이템 클릭 시 @PathVariable itemId로 아이템 정보를 조회 후 정보를 모델에 담아 editForm으로 이동하는 코드

@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) {
    Item item = itemRepository.findById(itemId);
    model.addAttribute("item", item);
    return "basic/editForm";
}


2-해당 item의 Id가 세팅되어 있는editForm. html

<div>
    <label for="id">상품 ID</label>
    <input type="text" id="id" name="id" class="form-control" value="1" th:value="${item.id}" readonly>
</div>

3-itemId를 PathVariable로 받아서 업데이트 하는 로직

@PostMapping("/{itemId}/edit")
public String edit(@PathVariable Long itemId, @ModelAttribute Item item) {
    itemRepository.update(itemId, item);
    return "redirect:/basic/items/{itemId}";
}

 

1-2-3의 흐름 순서로 아이템 정보를 수정합니다.

코드를 보시면 itemId를 갖고 조회를 하거나, 저장 시 활용하는 것을 확인하실 수 있습니다.

감사합니다.

서수민님의 프로필 이미지
서수민
질문자

답변 감사합니다! return 시에 view네임 만 있어서 햇갈리는것 같아요 model은 따로 return을 해주지 않아도 spring이 처리해 html파일로 보내주는게 맞나요?? 그리고 model은 계속 어딘가에 저장되어 있는지 아니면 view를 return해줄때에만 같이 보내지고 사라지는 지도 궁금해요 감사합니다~

서수민님의 프로필 이미지
서수민

작성한 질문수

질문하기