스프링/스프링 MVC 패턴

셀렉트 박스 (배송 방식 : 빠른 배송, 일반 배송, 느린 배송)

chanhee01 2023. 2. 19. 15:32

우선 item 객체에 deliveryCode를 추가해준다.

 

@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;
}

모델에 DeliveryCode의 리스트를 넘길 수 있도록 해주는 @ModelAttribute를 만들어준다.

 

 

<!-- SELECT -->
<div>
    <div>배송 방식</div>
    <select th:field="*{deliveryCode}" class="form-select">
        <option value="">==배송 방식 선택==</option>
        <option th:each="deliveryCode : ${deliveryCodes}" th:value="${deliveryCode.code}"
                th:text="${deliveryCode.displayName}">FAST</option>
    </select>
</div>

 

addForm에 위와 같은 코드를 만들어준다.

select 박스는 위와 같은 구조를 가지게 되는데 4번째 줄에서 select라고 적어주고 option 키워드를 통해 배송 방식 선택이라는 문자를 넣어준다.

그 다음에는 th:each로 반복문을 돌려서 deliveryCodes에 있는 3가지 리스트를 다 보여주게 한다.

th:text="${deliveryCode.displayName}"은 FAST가 아니라 빠른 배송으로 출력하도록 만들어준다.

 

 

 

상품 상세 페이지와 수정 페이지에도 같은 코드를 넣어준다.

 

 

 

이제 상품 등록 폼에서 배송 방식도 선택 할 수 있다.

 

상품 상세 페이지에서도 잘 나오고, 수정에서 배송 방식을 수정할 수도 있다. 물론 목록에서 상품을 볼 때에도 수정한 내용이 잘 적용된다.