Это очень похоже на некоторые другие вопросы, но никто больше не работает со строковыми ключами. Итак, поехали.
У меня есть TreeMap с набором названий категорий, которые вводятся по идентификатору категории. Идентификатор представляет собой число (в виде строки).
Я создаю TreeMap со значениями, а затем выставляю его на странице, вот так:
<%
Map categories = new TreeMap();
...
String categoryId = ...;
String categoryName = ...;
categories.put(categoryId, categoryName);
...
pageContext.setAttribute("categories", categories);
%>
Позже я перебираю ряд элементов, которые были назначены категориям. Каждый элемент имеет коллекцию .categories, которая содержит идентификаторы категорий, которым он был назначен. Я хочу отобразить имена, поэтому я делаю что-то вроде этого:
<c:forEach items="${item.categories}" var="catId">
${categories[“${catId}”}
</c:forEach>
К сожалению, это ничего не излучает. Также не ${categories["${catId}"].value}.
Однако это делает:
${categories["2"]}
Конечно, эта строка на самом деле не определяется данными элемента.
Я проверил, и идентификаторы, прикрепленные к каждому элементу, на самом деле соответствуют идентификаторам категорий; это не проблема несоответствия данных.
Итак, как мне получить имена категорий, когда данные, прикрепленные к элементам, имеют только идентификаторы?
P.S. Я должен отметить, что я не программист на Java - вообще. ЛАМПА больше в моем стиле. Так что изменение классов на самом деле не вариант.