有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

有没有办法摆脱这个点?或者我必须通过循环所有值并对照键进行检查吗?(我知道迭代是有效的)

谢谢


共 (1) 个答案

  1. # 1 楼答案

    应该行得通。你的问题在别的地方。要么你没有运行你认为自己运行的代码,要么你在发布这个问题时对原始代码做了“太多”的更改,结果碰巧变为正确

    [编辑]作为对你下面评论的回答:它当然有效。我甚至为您创建了一个quick-n-dirty SSCE(quick-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>
    

    它工作完美无瑕