작성
·
265
·
수정됨
0
먼저 사용자가 서울을 체크하면
item의 private List<String> regions;
에 SEOUL 이 저장이됩니다.
<div>
<div>등록 지역</div>
<div th:each="region : ${regions}" class="form-check form-check-inline">
<input type="checkbox" th:field="*{regions}" th:value="${region.key}"
class="form-check-input">
<label th:for="${#ids.prev('regions')}"
th:text="${region.value}" class="form-check-label">서울</label>
</div>
</div>
그 다음 th:field="*{regions}"
에 SEOUL이 들어가게 되고,
th:value="${region.key}"
에 있는 SEOUL, BUSAN, JEJU와 일치하는 지 비교합니다.
만약 있다면 checked = "checked"
를 합니다.
위와 같은 흐름이 맞는 지 궁금합니다.
답변 주시면 정말 감사하겠습니다.
답변 1
0
안녕하세요, 코딩먹는하마 님! 공식 서포터즈 codesweaver 입니다.
우선 사용자가 체크박스를 체크하는 행위는 백엔드에 당장 영향을 주지 않습니다. '상품등록'버튼을 눌러 폼 내용을 서버에 전송하는 행위가 발생할 때, 클라이언트-서버 상호간 통신이 발생합니다.
그러니 사용자가 서울을 체크하고 상품등록을 눌렀을 때 체크박스의 값인 SEOUL이 Item 인스턴스의 private List<String> regions; 에 할당됩니다. 그리고 나머지 프로세스를 따른 후 다시 상품 상세 화면으로 리다이렉트 됩니다. 그러면 Item 아이디에 해당하는 상품정보를 조회, 이를 뷰에 할당합니다.
그러면 뷰 파일(타임리프를 적용한 HTML 파일)에서 ${regions} 이와 같은 형태로 List<String> regions 값에 접근할 수 있습니다.
감사합니다.