Как получить доступ к значению карты, когда его ключ содержит точку в JSTL? - PullRequest
3 голосов
/ 27 октября 2009

когда моя Карта содержит ключ с точкой в ​​их имени, я не могу получить доступ к соответствующему значению напрямую с помощью обычного кода:

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

Есть ли способ избежать точки? Или я должен прибегнуть к циклу через все значения и проверить по ключу? (Я знаю, что итерация работает).

Спасибо!

1 Ответ

4 голосов
/ 01 ноября 2009

должно работать. Ваша проблема лежит где-то еще. Либо вы не запускаете код, которым вы себя считаете, либо изменили исходный код «слишком сильно» для публикации этого вопроса, и он стал правильным по совпадению.

[Редактировать] Как ответ на ваш комментарий здесь: это, безусловно, работает. Я даже создал для вас SSCCE quick-n-dirty (quick-n-dirty как в: использование скриптлетов, в то время как вы не должны делать это в реальном коде -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>

Работает без нареканий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...