JAVA에서 VIEW단으로 리턴한 데이터 객체를 JSTL 문법을 써서 쓰는 방법.
JAVA에서 보낸 객체가 이런형태로 생겼다고 하자.
[
[{key1 = lion, key2 = cat}],
[{key1 = apple, key2 = melon}]
]
자바에선 List<List<HashMap<String, String>>> 이런 곳에 담겨있던 데이터이다.
복잡한가..?ㅋㅋ
key1, key2에 있는 값을 출력해보자.
1. 맨 바깥 리스트 벗기기
java에서 modelData 란 이름으로 저 데이터를 넣었다.
<c:forEach items="${modelData}" var="list">
${list} <br/>
</c:forEach>
포이치 한번 돌린 ${list}엔 뭐가 들어있을까?
바깥 리스트 껍데기가 하나 벗겨진
[{key1 = lion, key2 = cat}]
[{key1 = apple, key2 = melon}]
이것이 출력된다.
2. 안쪽 리스트 벗기기
그다음 바깥 리스트들을 빼야한다.
포이치를 한번 더 돌린다.
<c:forEach items="${modelData}" var="list">
<c:forEach items="${list}" var="map">
${map} <br/>
</c:forEach>
</c:forEach>
이젠 아래와 같이 맵들만 남는다.
{key1 = lion, key2 = cat}
{key1 = apple, key2 = melon}
3. key1, key2의 값을 출력하기
<c:forEach items="${modelData}" var="list">
<c:forEach items="${list}" var="map">
${map[key1]} <br/>
</c:forEach>
</c:forEach>
${map[key1]} 또는 ${map.key1} 하면 그 키의 값이 출력될 것이다.
4. 두번째 리스트의 key2만 출력하기
melon이 나오도록 해보자.
그냥 ${modelData[0][1][key2]} 이렇게 해도 그만이긴 한데
나는 인덱스 개념을 알려주고 싶다. ㅋㅋㅋㅋ
- JSTL에서의 인덱스 사용방법부터!!!
<c:forEach items="${modelData}" var="list" varStatus="status">
${status.count}<br/>
</c:forEach>
이렇게 하면 포가 돌때마다 카운트가 증가한다.
만약 5번 돌았다면,
1
2
3
4
5 가 출력됐을것이다.
${status.count} 말고도 다른것도 있다.
${status.index} 라고 쓰면 0부터 시작이 된다. (count는 1부터 시작)
5번 돌았다면
0
1
2
3
4 가 출력된다.
그 이외에도 아래와 같은것이 있다.
여기 잘 나와있음 http://www.ibm.com/developerworks/kr/library/j-jstl0318/
난 count랑 index를 자주 쓰게 되는듯.
속성 | Getter | Description |
current | getCurrent() | 현재 반복 라운드 아이템 |
index | getIndex() | 현재 반복 라운드의 제로 기반(zero-based) 인덱스 |
count | getCount() | 현재 반복 라운드의 1 기반(one-based) 인덱스 |
first | isFirst() | 현재 라운드가 반복을 통한 첫 번째 패스임을 나타내는 플래그 |
last | isLast() | 반복현재 라운드가 반복을 통한 마지막 패스임을 나타내는 플래그 |
begin | getBegin() | begin 애트리뷰트의 값 |
end | getEnd() | end 애트리뷰트의 값 |
step | getStep() | step 애트리뷰트의 값 |
다시 본론으로 들어가서 ,
melon이 나오도록 해보자.
<c:forEach items="${modelData}" var="list" varStatus="status">
<c:if test="${status.index eq 1}>
${list[status.index][key2]} <br/>
</c:if>
</c:forEach>
이렇게 배열의 인덱스로 응용해서 사용이 가능하다!
'개발 > JSP' 카테고리의 다른 글
[SpringBoot 3, gradle] JSTL 사용 시 에러 (TagLibraryValidator) (0) | 2022.12.30 |
---|---|
jsp에서 태그 문자열 그대로 출력 (escape) (0) | 2015.08.12 |
Ajax 한글 깨짐 인코딩 방법 (0) | 2014.04.08 |
Custom tag 라이브러리 만들기 (0) | 2013.04.09 |