JSP式言語での発見

イヤ,単にあたしが無知なだけなんだがの.


Mapに対しては,'${map["key"]}'だけじゃなくて,'${map.key}'でもアクセスできる.つまり,

${header["host"]}
${header.host}

は同じ意味.でも,

${header["keep-alive"]}

はイイけど,

${header.keep-alive}

はダメ.
#当たり前だ.


あと,こんなコードは,

for (Iterator it = maps.keySet().iterator(); it.hasNext(); ) {
  Object key = it.next();
  %><%= maps.get(key) %><%
}

こう書ける.

<c:forEach var="item" items="${header}">
  ${header[item.key]}
</c:forEach>

でも,こう書いた方が楽.

<c:forEach var="item" items="${header}">
  ${item.key} : ${item.value}
</c:forEach>

JSTL+式言語的には,こっちがスマートっぽいんだが,Map.Entryを使うってのはイディオム的に馴染みがないので,ちょっとイヤだ.