Spring MVC / Thymeleaf:通过Map进行二维迭代,其中每个值都是一个集合

时间:2016-11-24 16:10:14

标签: spring thymeleaf

我正在使用这个数据结构:Map<String,Set<String>>我希望在Thymeleaf中遍历这两个维度。映射是一组对,其中目录分配给此目录中的文件。

<table th:each="subdirectory : ${subdirectories}">
    <tr th:each="files : ${subdirectories[__${subdirectory}__]}">
        <td th:each="file: ${files}" th:text="file"></td>
    </tr>
</table>

但它呈现的只有三个空<table></tables>。地图中肯定有数据。

我的数据结构如下:

{
"dirA/dir1": [
"file1.ext"
],
"dirA/dir2": [
"file1.ext",
"file2.ext"
]
}

对于每个目录路径,我想获得包含所有文件的表(或列表)。不知道如何从地图中获取值并迭代它。

2 个答案:

答案 0 :(得分:0)

经过大量尝试和错误以及大量使用Google后,我找到了以下工作解决方案:

<table th:each="subdirectory : ${subdirectories}">
    <thead>
        <th th:text="${subdirectory.key}"></th>
    </thead>
    <tbody>
        <tr th:each="file : ${subdirectory.value}">
            <td th:text="${file}"></td>
        </tr>
    </tbody>
</table>

答案 1 :(得分:0)

由于地图上的迭代返回一个条目(http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#iterable-values),您可以使用它来访问子目录(条目)的值。

<table th:each="subdirectory : ${subdirectories}">
  <tr th:each="files : ${subdirectory.value}">
    <td th:each="file: ${files}" th:text="${file}"></td>
  </tr>
</table>

如果要显示目录,可以使用${subdirectory.key}

(还修改了变量在td&#39; s th:text中)