스프링/4. 스프링 MVC-2

22. 라디오버튼

sdafdq 2023. 8. 27. 03:43
public enum ItemType {
    BOOK("도서"),FOOD("음식"),ETC("기타");

    private final String description;

    ItemType(String description){
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}

상수("값"), ~~~~ 상수n("값n");

enum임. 

 

@Data
public class Item {

    private Long id;
    private String itemName;
    private Integer price;
    private Integer quantity;
    private Boolean open;
    private List<String> regions;
    private ItemType itemType;
    private String deliveryCode;

    public Item() {
    }

    public Item(String itemName, Integer price, Integer quantity) {
        this.itemName = itemName;
        this.price = price;
        this.quantity = quantity;
    }
}

라디오버튼은 하나만 선택되어지므로 List로 안하고 하나만 받아도 괜찮음.

@ModelAttribute("itemTypes")
public ItemType[] itemType(){
    return ItemType.values();
}

이렇게 하면 값들인 도서, 음식, 기타가 전부 넘어감.

 

<!-- radio button -->
<div>
    <div>상품 종류</div>
    <div th:each="type : ${itemTypes}" class="form-check form-check-inline">
        <input type="radio" th:field="*{itemType}" th:value="${type.name()}" class="form-check-input">
        <label th:for="${#ids.prev('itemType')}" th:text="${type.description}" class="form-check-label">
            BOOK
        </label>
    </div>
</div>

마찬가지로 넘겨받은 모델의 itemTypes라는 키를 가진 값을 하나당 type이라는 이름으로 반복, 

*{itemType}는 Item의 itemType이고, 

type.name()은 enum의 이름, BOOK, ETC 등이다.

 

${#ids.prev('itemType')} 이건 똑같고,

 

${type.description} 이거는 우리가 처음 ${itemTypes}를 넣을 때 ItemType.values()이걸로 넣어서

이게 도서, 음식, 기타 이렇게 들어가는데,

ItemType 생성자를 보면

ItemType(String description){
    this.description = description;
}

이렇게 되어 있어서, description에 저 도서, 음식, 기타 이렇게 들어가는 듯.

 

'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글

24. 메시지, 국제화  (0) 2023.08.27
23. 셀렉트 버튼  (0) 2023.08.27
21. 멀티 체크박스  (0) 2023.08.27
20. 단일 체크박스  (0) 2023.08.26
19. 기존 Item에 요구사항 추가.  (0) 2023.08.26