Cela devrait fonctionner. Votre problème se situe ailleurs. Soit vous n'utilisez pas le code que vous pensez être, soit vous avez changé le code original "trop" pour avoir posté cette question et cela est devenu correct par coïncidence.
[Modifier] Comme un anwer sur votre commentaire ci-dessous: cela fonctionne certainement. J'ai même créé un rapide n-sale SSCCE pour vous (rapide-n-sale comme dans: en utilisant scriptlets pendant que vous ne devriez pas faire cela en vrai code -java appartient dans une classe java):
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%
// NOTE: this code belongs (in)directly in a Servlet class.
Map<String, Object> map = new HashMap<String, Object>();
map.put("foo.bar", "fubar");
map.put("beh.moo", 1234567);
request.setAttribute("map", map);
%>
<html>
<head><title>test</title></head>
<body>
<p>Access map values by key: ${map['foo.bar']} ${map['beh.moo']}</p>
<p>Iterate over map values:
<c:forEach items="${map}" var="entry">
<br>${entry.key} = ${entry.value}
</c:forEach>
</p>
</body>
</html>
Cela fonctionne parfaitement.
Je ne suis pas sûr de comprendre - pourquoi '$ {recordForm.map ['records.key']}' ne fonctionne pas? – McDowell