Как я могу получить доступ к HashMap с помощью JSTL-EL в jsp?

Привет всем, у меня проблема с доступом к HashMap в моем jsl с использованием EL и JSTL, моя хэш-карта выглядит так в сервлете:

HashMap indexes=new HashMap();

тогда давайте предположим, что я добавлю что-то вроде:

indexes.put(1,"Erik")

затем я добавляю его в сеанс: session.setAttribute("indexes",indexes)

из JSP, если я получаю доступ к хэш-карте, как это

${sessionScope.indexes}

он показывает все пары ключ-значение на карте, но, например, так:

${sessionScope.indexes[1]} or ${sessionScope.indexes['1']}

это не сработает

насколько я вижу, это метод, используемый во многих учебниках, я не знаю, где я ошибаюсь в каком-либо предложении?


person JBoy    schedule 10.02.2011    source источник


Ответы (1)


Числа рассматриваются как длинные в EL. В твоем случае:

HashMap indexes = new HashMap();
indexes.put(1, "Erik"); // here it autobox 1 to Integer

и на jsp

${sessionScope.indexes[1]} // will search for Long 1 in map as key so it will return null
${sessionScope.indexes['1']} // will search for String 1 in map as key so it will return null

Таким образом, вы можете сделать свой ключ карты длинным или строковым для использования.

Map<Long, String> indexes = new HashMap<Long, String>();
indexes.put(1L, "Erik"); // here it autobox 1 to Long

и

${sessionScope.indexes[1]} // will look for Long 1 in map as key

or

Map<String, String> indexes = new HashMap<String, String>();
indexes.put("1", "Erik");

и

${sessionScope.indexes['1']} // will look for String 1 in map as key
person jmj    schedule 10.02.2011