当我的Map包含名称中包含点的键时,我无法使用通常的代码直接访问相应的值:
${recordForm.map['records.key']}
有没有办法逃脱点?或者我是否必须循环遍历所有值并检查密钥? (我知道迭代有效)。
谢谢!
答案 0 :(得分:4)
它应该工作。你的问题出在其他地方。要么您没有运行您认为自己的代码,要么您将原始代码更改为“过多”以便发布此问题,并且巧合就变得正确。
[编辑]在下面你的评论作为答案:它肯定有效。我甚至为你创建了一个快速n-dirty SSCCE(快速n-dirty,如:使用scriptlet,而你不应该在真正的-java代码中属于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>
它完美无缺。