Thymeleaf:如果不在地图上工作

时间:2016-01-04 12:01:06

标签: thymeleaf

我正在尝试使用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>

另外,如何以表格方式打印密钥与该密钥的每个值(记住值是列表)?

1 个答案:

答案 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