当其键在JSTL中包含点时,如何访问映射值?

时间:2009-10-27 15:27:18

标签: java jsp jstl

当我的Map包含名称中包含点的键时,我无法使用通常的代码直接访问相应的值:

${recordForm.map['records.key']}

有没有办法逃脱点?或者我是否必须循环遍历所有值并检查密钥? (我知道迭代有效)。

谢谢!

1 个答案:

答案 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>

它完美无缺。