【问题标题】:How can I get a specific map value from Thymeleaf?如何从 Thymeleaf 获取特定的地图值?
【发布时间】:2021-10-01 05:10:39
【问题描述】:

如何从 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&lt;Map&lt;String, Object&gt;&gt;,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.

【问题讨论】:

  • ${map.get(key)} ,它应该可以工作。

标签: java spring thymeleaf


【解决方案1】:

循环遍历地图时,您会得到一个特殊的 java.util.Map.Entry 元素,其中包含 keyvalue,而不是实际项目本身。在您给出的示例中,使用 item 而不是 element 应该可以工作(如果这确实是您想要的):

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

【讨论】:

    【解决方案2】:

    如果我做对了,看起来在你的内部循环中按键循环会更好。

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

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 2016-12-20
      • 1970-01-01
      • 2013-10-02
      相关资源
      最近更新 更多