EL

8.forEach태그의 Map 컬렉션 추출

Jungsoomin :) 2020. 7. 15. 18:23

var 속성 즉 변수명은 entry 이며 , items 속성은 ${myMap}이다. request영역에서 맞는 키값을 찾고 Object를 Map으로 변환시켜주는 듯 하다. 그래야만 아래의 출력이 이해 될 것 같다.

 

Map객체는 entrySet으로 바꿀 수 있다는 사실을 기억하고 있다. Set<Entry<String, String>>타입이겠구나..

 

</head>
<body>
	<%
	Map<String, String> map = new HashMap<>();
	map.put("key1", "value1");
	map.put("key2", "value2");
	map.put("key3", "value3");
	map.put("key4", "value4");
	request.setAttribute("myMap", map);
	%>
	
	<c:forEach var="entry" items="${myMap}">
		${entry.key}, ${entry.value} <br />
	</c:forEach>
</body>

 

그렇다면 이코드는 어떻게 되는 것인지 코딩을 해보면..이거 같다.

<%
	Set<Entry<String, String>> entrys = map.entrySet();
	for(Entry<String,String> ent : entrys){
		out.println(ent.getKey() +" , " +ent.getValue());
	}
	%>

 

즉 Map컬렉션을 forEach문의 items 속성에 EL로 등록하고 var로 지정한다는 것은 Entry를 가져온다는 뜻같다.

 

그러므로 EL 에서는 ${var.key}  ${var.value} 인 것 같다.