2014-04-17 14 views
29

Próbuję zrozumieć, jak przechodzić przez wszystkie wpisy na mapie w Thymeleaf. Mam obiekt domeny przetwarzane przez Thymeleaf, który zawiera mapę.Jak przeglądać mapę w Thymeleaf

Jak przechodzić między kluczami i pobierać wartości?

Dzięki.

Odpowiedz

54

Nevermind ... Znalazłem go ...

<tr th:each="instance : ${analysis.instanceMap}"> 
         <td th:text="${instance.key}">keyvalue</td> 
         <td th:text="${instance.value.numOfData}">num</td> 

Dzięki.

+0

Jakie było tego źródło? –

+1

["Podczas iteracji map, zmienne iter będą miały klasę java.util.Map.Entry."] (Http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#iterable-values) – ben3000

+0

Out ciekawości, czy istnieje sposób, aby to zrobić dla dowolnego obiektu w Javie 8 lub 9? Podobnie jak iterowanie obiektów w JavaScript i JSON, wydaje mi się, że istnieje sposób na zrobienie obiektu serializowalnego typu Foo i wykonanie

. Jeśli nie można tego zrobić, może stać się częścią środowiska Java 10 lub następna główna wersja thymeleaf? Rozwiązałoby to tak wiele bólów głowy i zredukowało wiele obiektów rzutujących na wydajność, przekształcając je w mapy przed uruchomieniem ich za pomocą silników szablonów. – patrickjp93

13

Jeśli masz listę jako wartość. Na przykład, gdy masz mapę z kluczem będącym kategorią, a wartość jest listą pozycji odnoszących się do tej kategorii, możesz użyć tego:

<table> 
      <tr th:each="element : ${catsAndItems}"> 
       <td th:text="${element.key}">keyvalue</td> 
       <table> 
        <tr th:each="anews : ${element.value}"> 
         <td th:text="${anews.title}">Some name</td> 
         <td th:text="${anews.description}">Some name</td> 
         <td th:text="${anews.url}">Some name</td> 
         <td th:text="${anews.logo}">Some name</td> 
         <td th:text="${anews.collectionDate}">Some name</td> 
        </tr> 
       </table> 
      </tr> 
     </table>