почему я не могу получить доступ к значению моего HashMap с помощью динамического ключа (jsp, jstl, el)? - PullRequest
0 голосов
/ 18 октября 2019

Извините, я знаю, что это похоже на другие вопросы, но я все еще не могу найти решение.

У меня LinkedHashMap<Long,ExperimentMetadata> metadata установлено в качестве атрибута сеанса. (ExperimentMetadata - это javabean.) Я хочу получить атрибут от конкретного компонента, ключ которого является параметром metadata_key. Но когда я пытаюсь получить это напрямую, например,

<c:out value="${metadata[param.metadata_key].name}" />

, результат будет пустым.

Однако, когда я перебираю всю карту, она работает нормально, например

<c:forEach items="${metadata}" var="exp">
    <c:if test="${exp.key eq param.metadata_key}">
        <c:out value="${exp.value.name}" />
    </c:if>
</c:forEach>

Что я могу сделать, но это отчасти побеждает цель использования hashmap. Это также работает, если я, например,

<c:out value="${metadata[1].name}" />

Может кто-нибудь помочь подсказать, в чем проблема и как ее исправить? Thankyou!

1 Ответ

0 голосов
/ 18 октября 2019

Эй, я только что понял это! Я думаю, поскольку metadata_key является параметром, EL читает его как строку, а не как длинную. Заставить его думать о числах заставило его работать, например,

<c:out value="${metadata[param.metadata_key*1].name}" />

Я чувствую себя таким гордым. ;)

...