我正在尝试使用Thymeleaf模板引擎在特定地图不为空时在html模板中创建表格。但是,即使映射为空,也会使用默认值创建表。
所以,基本上我有一个Map<String, List<String>> myMap
,我需要在创建html表之前检查一下。我正在上下文中正确设置值,因为我可以通过调试来验证。
<div th:if="${not #maps.isEmpty(myMap)}">
<table cellspacing='0'>
<tr th:each="instance : ${myMap.instanceMap}">
<td th:text="${instance.key}">keyvalue</td>
<td th:text="${instance.value.numOfData}">num</td>
</tr>
</table>
</div>
另外,如何以表格方式打印密钥与该密钥的每个值(记住值是列表)?
答案 0 :(得分:3)
试试这个:
<div th:if="not ${myMap.isEmpty()}">
...
</div>
编辑:忘记问题的第二部分,您也可以类似地迭代列表。例子:
横向显示:
<table cellspacing='0'>
<tr th:each="instance : ${myMap}">
<td th:text="${instance.key}">key</td>
<td th:each="listObject : ${instance.value}">
<th:block th:text="${listObject}">List object text</th:block>
</td>
</tr>
</table>
垂直显示:
<table cellspacing='0'>
<th:block th:each="instance: ${myMap}">
<tr th:each="listObject, iterStat : ${instance.value}">
<td>
<th:block th:if="${iterStat.index} == 0" th:text="${instance.key}"/>
</td>
<td th:text="${listObject}"></td>
</tr>
</th:block>
</table>
作为iterStat属性的参考,请参阅:http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#keeping-iteration-status