Dev.GA

[jsp/jstl] <c:forEach>구문에서 break처리 본문

Dev.Front-End/javascript

[jsp/jstl] <c:forEach>구문에서 break처리

Dev.GA 2017. 12. 4. 15:10

개발을 하던중 <c:forEach> 구문에서 break 처리를 해야할 일이 생겼다.

일반적으로 JAVA에서 for문을 사용할시에는 break처리가 간단하지만 <c:forEach> jstl에서는 break를 지원하지 않는다고 한다.


먼저, jstl에 대해서 알아보자.


JSTL이란?

- JSTL이란 JSP표준라이브러리(JSP Standard Tag Library)의 약자로,

자주 사용할 수 있는 커스텀 태그들을 표준으로 모아둔 태그 라이브러리라 할 수 있다.

ex.) <c:if>, <c:choose>, <c:when>, <c:forEach> 등등...


JSTL에서 break를 지원하지 않기 때문에 생각해본게 JAVA와 크게 다를게 없었다.

어차피 if문을 통해 걸러내야하는것은 같음으로, <c:set>을 이용해 변수처리로 실제 break가 일어나지는 않지만 break처럼 처리해버리도록 하였다.


예제

1
2
3
4
5
6
7
8
<c:set var="loop_flag" value="false" />
<c:forEach var="items" items="${resultList }" varStatus="status">
    <c:if test="${not loop_flag }">
        <c:if test="${resultList eq items.value }">
            <c:set var="loop_flag" value="true" />
        </c:if>
    </c:if>
</c:forEach>
cs


<c:set>을 이용 변수 loop_flag를 false로 지정하고

<c:forEach>구문 실행시 <c:if>문으로 판단하여 특정 원하는 값에서 loop_flag값을 true로 변경해버린다.

이렇게 되면 3번째 라인, loop_flag변수를 검출하는 <c:if>문에서 거짓된 조건으로 마치 JAVA에서 break구문과 같은 결과를 얻을 수 있다.


또 다른 방법으로 scriptlet(스크립틀릿)의 <% break; %>구문으로도 같은 효과를 얻을 수 있지만

scriptlet을 사용하지 않는 본인으로써는 JSTL로 처리하였다.

'Dev.Front-End > javascript' 카테고리의 다른 글

[Ajax] Ajax란 무엇인가?  (0) 2018.03.12
Comments