티스토리 뷰


뭔가 팝업이 뜨거나 모달이 뜰때 
데이터를 바로 뿌려야 하는 경우가 있다.

나의 경우는 ModelAndView에서 데이터를 가져와 addObject를 해서 바로 뿌려주는데
그때 Selectbox를 표시하거나 , 배열의 값을 전달해야 하는 경우 javascript에서 <C: 태그를 사용한다.
이때 중요한건 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 선언해주어야 한다.


나는 HashMap형태로 지정해준 배열의 안에 key, value 형태의 값이 있는 리스트를 가져왔었는데,
이번에 그냥 String[] 형태의 값을 리스트로 가져오게 되어 두가지 방법을 포스팅 하려고 한다.


1. HashMap 으로 key value 값이 있는 경우

리스트를 조회하는 경우였다.
쿼리에서 id와 이름을 가져왔다.
Controller에서 List<HashMap> 형태로 리턴받은 후 addObject("hostList , hostList)로 넣어주었다.

JSP 파일 javascript에서 

1
2
3
4
5
var hostList = new Array();
<c:forEach items="${hostList}" var="hashMapHostList" >
    hostList.push("${hashMapHostList.vds_id}");
    hostList.push("${hashMapHostList.vds_name}");
</c:forEach>
cs

이렇게 뿌려주었다. 

items 에는 내가 명시적으로 지정한 배열 이름이 오고, var변수에는 foreach문안에서 사용될 변수이름이다.
우리 선임님 말씀으로는 hashMapHostList는 Arr이라치면 Arr[0] Arr[1] 이런식이라고 하셨다.
var로 선언해준 hostList라는 배열에 push 해주면 

1
2
3
4
for (var i=0; i<hostList.length;){
    appendStr = "<option value='" + hostList[i+++ "'>" + hostList[i+++ "</option>" + "\n";
    $("#hostOption").append(appendStr);
}
cs

 이런식으로 꺼내쓸 수 있다.


2. String[] 형태의 값을 가져오는 경우

이경우는 Controller에서 String[] 형식의 배열을 addObject("vmInfoList" , vmInfoArr) 로 넣어주었다.
나는 이걸 JSP 팝업창으로 받아서 , 팝업창에서 ajax를 호출할때 다시 java로 넘겨줄 생각이었다.

이때는 key value 형태가 아니어서, index가 필요하였다. arr[0] arr[1] 이런식으로

JSP 파일 javascript에서 

1
2
3
4
var uuidList = new Array();
<c:forEach items="${vmInfoList}" varStatus="status">
    uuidList.push("${vmInfoList[status.index]}");
</c:forEach>
cs

items는 아까와 동일하게 내가 명시해준 배열의 이름이고, 
varStatus는 상태용 변수라고 하는데 상태용 변수.index를 하면 0부터 증가한다.

그러니까 아까의 var변수와 같은 느낌? 
그래서 vmInfoList[상태용변수.index]가 되는것이다. 


어렵지만, 기억하자 ! 


이분이 정리를 잘해놓으셨다.

http://jetalog.net/20

댓글