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 |