Thymeleaf:如果不处理地图

One*_*ror 0 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>
Run Code Online (Sandbox Code Playgroud)

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

Luk*_*hey 5

尝试这个:

<div th:if="not ${myMap.isEmpty()}"> 
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

编辑:忘记了问题的第二部分,您也可以类似地迭代列表。例子:

水平显示:

<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>
Run Code Online (Sandbox Code Playgroud)

垂直显示:

<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>
Run Code Online (Sandbox Code Playgroud)

作为 iterStat 属性的参考,请参阅:http ://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#keeping-iteration-status