팀프로젝트
[스크린타임 관리 앱] 설문조사
- 좋아요수
- 0
- 댓글수
- 0
- 조회수
- 175
팀프로젝트
질문&답변
안녕하세요. 우선 질문에 대해 정성스런 답변 정말 감사합니다.!! 현재 답변해주신 내용은 실행하고 이해했습니다. 그런데 궁금한 점이 생겼습니다. 처음 답변에서 저장된 item의 regions(도메인에 List로 선언)을 반복문을 통해 꺼내면서 모델로 등록된 regions와 비교하면서 출력을 한 것으로 보입니다. 이 의도와 코드는 이해가 됬습니다. 그런데 items.html가 아닌 item.html, editForm.html을 보면 제가 처음 질문을 업로드한 코드와 같이 모델 'regions'를 for문을 통해 별도의 반복문(th:each)없이 item의 regions를 확인 한다는 점 에서 의문이 생겼습니다. 다른 곳에서는 답변과 같이 item.regions을 확인 하는데 th:each가 필요없는는데 items.html에서는 왜 필요한 것 일까요? 질문 읽어주셔서 감사합니다.
질문&답변
안녕하세요. 답변을 확인하고 강의내용을 다시 복습해보았습니다. th:field의 특성은 인자로 입력된 객체에 대해 id, name, value 속성을 자동으로 만들어 주는 것이라고 이해했습니다. 그리고 예를들어, th:field=${itemName}"가 id="itemName" name"itemName", value="itemA" 를 만들어주고 해당 상위 컴포넌트에 object 가 선언되면 *{itemName}으로 간소화 할 수 있습니다. 그리고 질문에서 언급드렸던 것처럼 멀티 체크박스편을 수강하면서 @ModelAttribute에 붙은 메소드는 컨트롤러에있는 메소드들이 실행될때마다 해당 어노테이션이 붙은 메소드로 부터 반환된 모델들이 생성된다는 것으로 이해했습니다. 그러다 item list를 조회하는 페이지인 item.html에서도 '등록 지역'에 대한 모델들이 생성이 될 것이니 해당 데이터를 나타내고자 하였습니다. 그래서 아이템을 태그 반복문을 통해 list로써 저장되어있는 모델 items에서 item 객체를 하나씩 받고 이 객체를 통해 regions을 받아오려고 시도를 했습니다. 해당 객체는 th:object로써 선언된 것이 아니기 때문에 th:field="*{regions}"가 아닌 th:field="${item.regions}"로 선언하였고 div 태그에 작성된 th:each="region :${regions}"를 통해 @ModelAttribute에 의해 생성된 모델로 부터 를 region으로 받아와 th:field="${item.regions}"의 값과 매칭을해서 체크하거나 체크를 안하도록 표시하는 로직을 이해했습니다. 그리고 태그는 동적으로 생성된 컴포넌트에 대해 아이디를 부여하기 위한 로직으로 이해 했습니다. 원래 해당 예제 코드는 item.quantity 즉 아이템의 수량까지만 나타내고자 했는데 제가 그 밑에 추가를 하면서 오류가 발생했습니다. 제가 이해한 내용이 어디가 부족했는지 잘 모르겠습니다..... th :each ="item : ${items}" > href ="item.html" th :href ="@{/form/items/{itemId} (itemId=${item.id})}" th :text ="${item.id}" > 회원 id href ="item.html" th :href ="@{|/form/items/${item.id}|}" th :text ="${item.itemName}" > 상품명 th :text ="${item.price}" > 10000 th :text ="${item.quantity}" > 10 th :each ="region : ${regions}" class ="form-check form-check-inline" > type ="checkbox" th :field ="${item.regions}" th :value ="${region.key}" class ="form-check-input" disabled > th :for ="${#ids.prev('regions')}" th :text ="${region.value}" class ="form-check-label" > 서울