일반적으로는 리스트 타입이 아닌데 JSTL에서 forEach를 사용해서 발생하는 오류이다.
읽어봐도 forEach 내의 item을 어떻게 iterate를 할수 있는지 알수 없다고 써있으니까 말이다.
간단하게 이 문제면 해결하기가 쉽다.
근데 다른 이 오류는 다른 문제에서도 나타날 수 있다.
예를들면..
다음과 같은 경우 소스를 보면 된다.
<c:forEach items="${list}" var="list">
<c:choose>
<c:when test="${fn:length(list) == 1}">
<strong>${list.content }</strong>
</c:when>
<c:otherwise>
<!-- 나머지 -->
</c:otherwise>
</c:choose>
</c:forEach>
forEach 내에 when을 사용하여 list의 전체 length 를 구하는 것이 소스코드의 의도이다.
근데 이렇게 소스를 작성하면
Don't know how to iterate over supplied "items" in <forEach> |
오류를 볼 수 있다.
forEach에서 list를 사용하여 item값을 추출했는데 length list를 사용하니
iterator가 작동하는 상태에서 컴파일러가 소스를 이해하지 못하는 일이 생긴 것이다.
이런 경우 다음과 같은 방법으로 작성을 해줘야 한다.
<c:choose>
<c:when test="${fn:length(list) == 1}">
<c:forEach items="${list}" var="list">
<strong>${list.content }</strong>
</c:forEach>
</c:when>
<c:otherwise>
<!-- 나머지 -->
</c:otherwise>
</c:choose>
forEach 함수 내에서 item을 쓰기 전에 먼저 전체 값을 뽑아준다.
그러면 오류가 해결된다.
'Stack Overflow > 스프링' 카테고리의 다른 글
[스프링] 자바스크립트에서 웹 브라우저가 URL을 통해 직접 페이지를 호출하는지 아는 방법 (IFRAME) (273) | 2022.04.08 |
---|---|
[스프링] JS Jquery 함수 trigger 말고도 Button이 아닌 것(A 태그 등) 강제로 처음부터 시작하기 (4) | 2022.03.26 |
[스프링] JSTL 특정 날짜 이후에 페이지 내용 변경하기 (4) | 2022.03.22 |
[스프링] 자바스크립트 콜백(JS Callback)을 이용해서 비동기 순서 제어하는 방법 (446) | 2022.03.07 |
[스프링] 레거시파일 - 크롬에서 파일 다운로드 시 jsp 확장자 파일이 내려받아지는 경우 (254) | 2022.02.25 |
댓글