public void list(Criteria cri ,Model model)
Controller에서 select 한 값이라거나 map, list 등을 Model에 담아서 값을 보내줄 수 있다.
저 값들을 View(jsp)단에서는
<!-- val : map에 담은 변수(컬럼)명 -->
<input type="text" name="name" value="<c:out value="${list.val}"/>">
이렇게 불러올 수 있다,
하지만 JavaScript 단에서 Model값을 불러와야 한다면?
같은 jsp 소스 내에 위치하고 있다고 하더라도 jstl,el 은 서버단에서 동작하고 JavaScript는 브라우저에서 실행된다. 그렇기 때문에 두 언어 간에 변수를 주고받을 수 없어서 난감한 상황이였다.
불러오는 데이터가 1건밖에 없다면 JavaScript에서 var value = "${list.val}"; 이런식으로 해서 이미 불러왔을 것이다.
하지만 list, map 형식으로 model에 담겨와 여러 row가 존재하고 key값도 여러개라면 참 난처해진다.
이럴 때는
/* JavaScript 내에서 jstl을 사용할 수 있다. jstl 선언해주는 것 잊지말기! */
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
/* JavaScript 태그 및 함수 등등 생략하고 필요한 부분에서 forEach 사용하기 */
var bno = [];
<c:forEach items="${list}" var="feq">
// JavaScript 배열에 값을 추가하기 위해서는 push() 함수를 사용해야 한다.
bno.push("${feq.bno}");
</c:forEach>
이렇게 JavaScript에서 jstl을 사용하여 변수에 담는 방법을사용했다.
forEach로 루프를 돌려서 차례대로 list나 object, 또는 변수에 담아서 알맞게 사용하면된다.