Перебор списка карт в Thymeleaf

#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 объектов, а не объектов map Entry , поэтому 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 .