У меня есть карта с ключом Integer. Используя EL, как я могу получить доступ к значению по его ключу?
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
Я думал, что это сработает, но это не так (где карта уже находится в атрибутах запроса):
<c:out value="${map[1]}"/>
Последующие действия: Я обнаружил проблему. По-видимому, ${name[1]}
выполняет поиск карты с номером как Long
. Я понял это, когда я изменил HashMap
на TreeMap
и получил ошибку:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
Если я изменю свою карту следующим образом:
Map<Long, String> map = new HashMap<Long, String>();
map.put(1L, "One");
то ${name[1]}
возвращает "Один". Что с этим? Почему <c:out>
обрабатывает число как длинное. Кажется противоречащим мне (поскольку int чаще используется, чем длинный).
Итак, мой новый вопрос: есть ли обозначение EL для доступа к карте с помощью значения Integer
?