Доступ к записям TreeMap по строковому ключу в JSTL - PullRequest
0 голосов
/ 24 июня 2011

Это очень похоже на некоторые другие вопросы, но никто больше не работает со строковыми ключами. Итак, поехали.

У меня есть 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 - вообще. ЛАМПА больше в моем стиле. Так что изменение классов на самом деле не вариант.

1 Ответ

1 голос
/ 25 июня 2011

РЕДАКТИРОВАТЬ: Извините, я неправильно прочитал вопрос.

Разверните переменную catId:

 ${categories[“${catId}”}

должно быть

 ${categories[catId]}

Это должно исправить.

...