2014-04-17 18 views
29

Tôi đang cố gắng hiểu cách lặp qua tất cả các mục trong Bản đồ trong Thymeleaf. Tôi có một đối tượng miền đang được xử lý bởi Thymeleaf có chứa một bản đồ.Cách lặp qua Bản đồ trong Thymeleaf

Làm cách nào để lặp qua các phím và tìm nạp các giá trị?

Cảm ơn.

Trả lời

54

Nevermind ... Tôi tìm thấy nó ...

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

Cảm ơn.

+0

Nguồn này là gì? –

+1

["Khi lặp lại bản đồ, biến lặp sẽ thuộc lớp java.util.Map.Entry."] (Http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#iterable-values) – ben3000

+0

Out của sự tò mò, là có một cách để làm điều này cho bất kỳ đối tượng theo Java 8 hoặc 9? Giống như việc lặp lại các đối tượng trong JavaScript và JSON, tôi sẽ nghĩ rằng có một cách để lấy một đối tượng có thể tuần tự hóa kiểu Foo và làm Nếu điều này không thể thực hiện được, điều này có thể trở thành một phần của Java 10 hay không phiên bản chính tiếp theo của thymeleaf? Điều này sẽ giải quyết rất nhiều đau đầu và giảm rất nhiều hiệu suất trên không chuyển đối tượng thực thể vào bản đồ trước khi chạy chúng thông qua các công cụ mẫu. – patrickjp93

13

Trong trường hợp bạn có Danh sách làm giá trị. Ví dụ: khi bạn có một bản đồ có khóa là danh mục và giá trị là danh sách các mục có liên quan đến danh mục đó, bạn có thể sử dụng điều này:

<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> 
Các vấn đề liên quan