我正在使用这个数据结构: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"
]
}
对于每个目录路径,我想获得包含所有文件的表(或列表)。不知道如何从地图中获取值并迭代它。
答案 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
中)