Java 当映射值的键在JSTL中包含一个点时,如何访问映射值?
当我的地图名称中包含带点的键时,我无法使用常规代码直接访问相应的值:Java 当映射值的键在JSTL中包含一个点时,如何访问映射值?,java,jsp,jstl,Java,Jsp,Jstl,当我的地图名称中包含带点的键时,我无法使用常规代码直接访问相应的值: ${recordForm.map['records.key']} 有没有办法摆脱这个点?或者我必须通过循环所有值并对照键进行检查吗?(我知道迭代是有效的) 谢谢 它应该有用。你的问题在别的地方。要么你没有运行你认为自己运行的代码,要么你为了发布这个问题而对原始代码做了“太多”的更改,结果碰巧变为正确 [编辑]以下是对您评论的回答:它确实有效。我甚至为您创建了一个quick-n-dirty SSCE(quick-n-dirty
${recordForm.map['records.key']}
有没有办法摆脱这个点?或者我必须通过循环所有值并对照键进行检查吗?(我知道迭代是有效的)
谢谢 它应该有用。你的问题在别的地方。要么你没有运行你认为自己运行的代码,要么你为了发布这个问题而对原始代码做了“太多”的更改,结果碰巧变为正确 [编辑]以下是对您评论的回答:它确实有效。我甚至为您创建了一个quick-n-dirty SSCE(quick-n-dirty如中所示:使用scriptlets,而您不应该在实际中这样做-java代码属于java类):
测试
按键访问映射值:${map['foo.bar']}${map['beh.moo']}
迭代贴图值:
${entry.key}=${entry.value}
它可以完美地工作。我不确定我是否理解-为什么
${recordForm.map['records.key']}
不能工作?我一点也不确定。我注意到我想要访问的“map”字段也扩展了HashMap。也许这可以解释为什么它不起作用。
<%@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>