인프런 커뮤니티 질문&답변
모델을 통해 데이터를 보내는 부분에서 궁금한 점이 있습니다.
작성
·
290
1
@GetMapping("/add")
public String addForm(Model model) {
model.addAttribute("item", new Item());
return "form/addForm";
}
@ModelAttribute("deliveryCodes")
public List<DeliveryCode> deliveryCodes() {
List<DeliveryCode> deliveryCodes = new ArrayList<>();
deliveryCodes.add(new DeliveryCode("FAST", "빠른 배송"));
deliveryCodes.add(new DeliveryCode("NORMAL", "일반 배송"));
deliveryCodes.add(new DeliveryCode("SLOW", "느린 배송"));
return deliveryCodes;
}
컨트롤러에서 @ModelAttribute 와 @GetMapping("/add") 를 통해 데이터를 넘겨주는데,
@ModelAttribute 를 통해 넘어가는 데이터는 item 객체 내부의 deliveryCode 인가요?
아니면, model.addAttribute("deliveryCodes", deliveryCode 리스트) 인가요?
addForm.html 에서
<form action="item.html" th:action th:object="${item}" method="post">
th:object 는 ${item} 으로, 모델로 넘어간 item 객체인데
<select th:field="*{deliveryCode}" class="form-select">
밑에서 선택 변수 식으로 deliveryCode 를 사용하고 있어서 헷갈립니다.
답변 1
2
안녕하세요. waysoleward01 님, 공식 서포터즈 OMG입니다.
모델을 통해서 보내는 데이터는 select 박스의 option에 대한 데이터입니다.
option은 리스트로 modelAttribute로 담긴 내용을 확인할 수 있습니다.
=> th:each로 deliveryCodes를 순회합니다.
본문에 남기신 select 박스 내용은 강의 3분 20초경 설명해주시는데, Item의 필드인 deliveryCode를 얘기합니다.
(멀티 셀렉트가 아닌 단일 셀렉트이기 때문에, 문자열 타입(리스트가 아닌)인 것을 확인 할 수 있습니다.
감사합니다.






답변 정말 감사합니다.!
제가 잘못 생각했네요. 이제 제대로 이해했습니다.