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>