본문 바로가기
IT 개발/개념정리

[JSTL] 변수명 동적 할당 방법 (with forEach)

by Dev.Jeon 2024. 3. 20.
반응형

  상황  

  • DB에서 목록을 조회 시, machine1~ machine40처럼 이름+숫자 형식의 데이터를 조회하고
    이 다수의 데이터를 화면에 전부 뿌려야 할 때 추천합니다. 

 

  문법  

  • 데이터 예시가 아래 처럼 되어 있는 경우
    param1 = "파람1입니다.";
    param2 = "파람2입니다.";
    .
    .
    param40 = "파람40입니다."; 
 <!-- 반복문을 돌리는데 해당 변수 수만큼 돌게 begin(시작) end(끝)을 설정 -->
<c:forEach var="i" begin="1" end="40">
    <!-- 변수명을 동적으로 설정 후 저장 
    	 pram = "pramN"으로 할당  -->
    <c:set var="pram" value="pram${i}" />
    
        	<!-- pramN의 값 출력 -->
            <span>${result[pram]}</span>
            
    </c:if>
</c:forEach>

 

  • 결과  :
    파람1입니다.
    파람 2입니다.
    .
    .
    파람 40입니다.

 

  응용  

  • if문으로 파람값이 비어 있지 않을 때만 표출되게 조건 추가

    데이터 예시가 아래 처럼 되어 있는 경우
    param1 = null;
    param2 = "파람 2입니다.";
    param3 = null;
    param4 = "파람 4입니다."; 
<c:forEach var="i" begin="1" end="4">
    <c:set var="pram" value="pram${i}" />
    
    <!-- result에서 "pramN" 이름값가진 데이터 NULL체크  -->
    <c:if test="${not empty  result[pram]}">
        <li>
            <!-- pram#1, pram#2, ... pram#40 출력 -->
            <span class="tit">pram#${i}</span>
        
        	<!-- pramN의 값 출력 -->
            <span>${result[pram]}</span>
        </li>
    </c:if>
</c:forEach>

 

  • 결과 :
    param#2
    파람 2입니다.
    param#4
    파람 4입니다.

IF문을 통해 데이터가 없는 것은 제외하고 전부 화면에 표시하게 됩니다.

HTML이 길어지는 것을 방지하고 단순 노가다 작업 할 필요 없으니 매우 편해서 소개해 봤습니다.

반응형

댓글