티스토리 뷰

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를 자주 쓰게 되는듯.


속성GetterDescription
currentgetCurrent()현재 반복 라운드 아이템
indexgetIndex()현재 반복 라운드의 제로 기반(zero-based) 인덱스
countgetCount()현재 반복 라운드의 1 기반(one-based) 인덱스
firstisFirst()현재 라운드가 반복을 통한 첫 번째 패스임을 나타내는 플래그
lastisLast()반복현재 라운드가 반복을 통한 마지막 패스임을 나타내는 플래그
begingetBegin()begin 애트리뷰트의 값
endgetEnd()end 애트리뷰트의 값
stepgetStep()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>



이렇게 배열의 인덱스로 응용해서 사용이 가능하다!



댓글
  • 프로필사진 좋은 정보 감사합니다 2013.10.30 23:01 신고
  • 프로필사진 PaMilrU 좋은 정보 감사합니다.
    출처 밝히고 블로그에 담아가겠습니다.
    혹시나 문제가 된다면 말씀해주시면 삭제하도록 하겠습니다.
    2016.10.04 10:34 신고
  • 프로필사진 coco 정말 감사합니다. 이거때문에 거의 멘탈 부셔 졌는데 3일동안 고민과 책과 인터넷을 찾아서 삽질하고 있었는데 진짜 이것떄문에 한방에 해결 되었습니다 ㅜ
    진짜 감사합니다 좋은정보 저의 블로그에 담아갑니다 출처도 밝히고 링크도 걸어 놓겠습니다. 와 진짜 감사합니다. 소리 질렀어요 너무 감사합니다 ㅜ 으허허헝헝ㄹ어 ㅇ 다시 이제 프로젝트가 진행할수 있어요 ~ 너무 기쁘네요 3일만에 문제 해결이라니!! 캬캬캬캬캬 완전 너무 감사합니다. 헤헤헤헤ㅔ
    2018.01.05 20:23 신고
댓글쓰기 폼