Я видел много таких вопросов, но не совсем. Разница в том, что это проблема внешнего ключа. Существует коллекция виджетов, foo, которая имеет типId. Затем есть hashmap типов, которые содержат как typeId, так и typeName. Когда итерация коллекции виджетов, мы хотим, чтобы отобразить TYPENAME на основе TypeID виджета:Как получить значение из hashmap в JSTL
Java
Map<String, String> typeMap = new HashMap<Integer, String>();
typeMap.put("1", "One");
typeMap.put("2", "Two");
typeMap.put("3", "Three");
List<Foo> fooList = generateFooList();
где Foo имеет метод Строка getTypeId(), который возвращает значение «1» , "2" или "3" вместе с строкой getName().
JSTL
<table border="1">
<tr><th>Key</th><th>value</th><th>Key Class</th></tr>
<c:forEach var="foo" items="${fooList}" varStatus="status">
<tr>
<td>${foo.name}</td>
<td>${foo.typeId}</td>
<!-- In the following four lines of code, the idea is to use the typeId
from the current foo to 'get' the name of the type from the typeMap.
All the example I have seen are always iterating over the map itself,
which is NOT the case here. -->
<td>${typeMap['foo.typeId']}</td>
<td>${typeMap[foo.typeId]}</td>
<td>${typeMap['foo.typeId'].value}</td>
<td>${typeMap[foo.typeId].value}</td>
<td>${typeMap['1']}}</td>
</tr>
</c:forEach>
</table>
Первые 4 колонки, которые используют TypeMap всегда пусты, последняя делает дисплей 'One'. Я даже пойти так далеко, чтобы установить TypeID в этом:
<c:set var="typeId" value="${foo.typeId}"/>
И заменить все foo.typeId с просто TypeID, и я получаю тот же эффект. В этом случае я могу изменить карту, я не могу изменить foo. Идентификатор foo является строкой, которая не может быть изменена на Long. Я попытался сделать ключ hashmap длинным, и это тоже не имеет никакого эффекта. Есть предположения?
Я ценю ответ, но я думаю, что может произойти сбой в сообщениях. Цель состоит в том, чтобы не перебирать HashMap (typeMap), а отдельный список (fooList). Итерируя по одной строке списка, typeId (вся концепция внешнего ключа) используется для поиска строкового значения в типеMap. В приведенном примере 5-й и 6-й
Получил ... Я постараюсь что-то найти. Но я думаю, что должно было работать
Смежные вопросы