본문 바로가기
Java && Spring

[Thymeleaf] nested list에서 input의 th:field 와 th:value 이슈

by 행복 개발자 2022. 6. 27.

Thymeleaf 가 생각보다 제약사항이 있고 사용하기 어려운 점이 계속 발생한다.. 

<div class="form-group"  th:each="group,stat : *{itemOptionGroupList}">
    <label for="itemOptionGroupList" >옵션그룹명(<span th:text="${stat.index+1}"></span>)</label>
    <input type="text" id="itemOptionGroupList"
           th:field="*{itemOptionGroupList[__${stat.index}__].itemOptionGroupName}"
           class="form-control"
           placeholder="옵션그룹명을 입력하세요(ex, 사이즈, 색상)">
    <input type="hidden" th:field="*{itemOptionGroupList[__${stat.index}__].ordering}" th:value="${stat.index}">
</div>

위의 코드와 같이 input의 th:field를 사용하면  th:value 값을 입력하더라도 th:field의 값으로 대체되고 view에서 선언한 index와 같은 값이 들어가지 않는 문제가 있다. 

 

field는 id, name을 대체하기 때문에  field 대신에 name, value 를 사용하라고 구글링하면 나오긴 하지만 

name으로 변경 시 nested list에 대한 표현이 되지 않고 최종 필드명만 표시된다. 

 

몬가 다른 방법이 있을것 같은데 끝내 못찾고..  view 바인딩 시 값을 controller에서 주는 것으로 우회하였다. -_-;

 

참고 : https://stackoverflow.com/questions/31542032/how-to-add-default-values-to-input-fields-in-thymeleaf