首页 > 解决方案 > 如何从 Thymeleaf 获取特定的地图值?

问题描述

如何从 Thymeleaf 获取特定的地图值?

        <tr th:each="item : ${items}">
            <td th:each="element : ${item}">
                   <a th:text="${element['key']}">anchor</a>
            </td>
        </tr>

在上面的代码中,显示了一个元素对应的所有键。

但我想要的是得到element['projectName']. 也就是说,我希望它是这样的:

        <tr th:each="item : ${items}">
            <td th:each="element : ${item}">
                   <a th:text="${element['key']}"
                        th:href="${element.get('projectName')}">anchor</a>

            </td>
        </tr>

items的数据类型是List<Map<String, Object>>,items里面的值是

        assertThat(innerItems.get(0).get("modelName")).isEqualTo("a");
        assertThat(innerItems.get(0).get("item")).isEqualTo(1);
        assertThat(innerItems.get(0).get("id")).isEqualTo("q");
        assertThat(innerItems.get(0).get("projectName")).isEqualTo("DefaultProject");
        assertThat(innerItems.get(0).get("user_poi_no")).isEqualTo(1);
is.

标签: javaspringthymeleaf

解决方案


当你遍历一张地图时,你会得到一个带有 a和 a的特殊java.util.Map.Entry元素,而不是实际的项目本身。在您给出的示例中,使用而不是应该工作(如果这确实是您想要的):keyvalueitemelement

<tr th:each="item : ${items}">
  <td th:each="element : ${item}">
    <a th:text="${element['key']}" th:href="${item['projectName']}">anchor</a>
  </td>
</tr>

如果您只想要projectName列表中的每个项目,您甚至不需要内部循环。像这样的例子:

<tr th:each="item : ${items}">
  <td>
    <a th:text="${item['projectName']}">anchor</a>
  </td>
</tr>

推荐阅读