#java #spring-boot #thymeleaf
#java #весенняя загрузка #thymeleaf
Вопрос:
У меня есть список, содержащий карту, подобную этой:
Map<String, Long> count = new HashMap<>();
count.put("totalMessageCount", 5L);
Map<String, Map<String, Long>> names = new HashMap<>();
names.put("someKey", count);
List<Map<String, Map<String, Long>>> list = new ArrayList<>();
list.add(names);
Я отправляю этот список из контроллера в представление.
Я пробовал это:
<table>
<tr th:each="element : ${list}">
<td th:text="${element.key}"></td>
<td th:text="${element.value}"></td>
</table>
Я получаю сообщение об ошибке:
org.springframework.expression.spel.Исключение SpelEvaluationException: EL1008E: свойство или поле ‘key’ не может быть найдено для объекта типа ‘java.util.HashMap’ — может быть, не общедоступный или недопустимый? в org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:217 ) в org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:104 ) в org.springframework.expression.spel.ast.PropertyOrFieldReference.access$000(PropertyOrFieldReference.java:51 ) в …
Приветствуется любая помощь.
Комментарии:
1. Ваш
list
представляет собой списокMap
объектов, а не объектов mapEntry
, поэтомуelement
название неверное.2. через 2 часа я наконец понял, что вы имели в виду. Хорошо, спасибо, теперь я понимаю.
Ответ №1:
Скорее всего, вам нужен другой уровень вложенности.
<table>
<th:block th:each="map : ${list}">
<tr th:each="e : ${map}">
<td th:text="${e.key}"></td>
<td th:text="${e.value}"></td>
</tr>
</th:block>
</table>
As key
и value
являются свойствами a Map.Entry
.