如何在Thymeleaf中使用“map.get(key)” - Broadleaf Ecom

问题描述 投票:0回答:8

我有一个

Hashmap (String, List<Offers>)
,已传递到 Thymeleaf 页面。我在页面上找到了这张地图,并且可以访问它。

如何使用 Thymeleaf 实现

map.get(key)
?我只需要根据某个键获取值,然后解析并打印该值,我知道该值并具有其逻辑。

我正在运行 Broadleaf 应用程序,Thymeleaf 是它的 UI 引擎。

spring-mvc thymeleaf broadleaf-commerce
8个回答
38
投票

使用

${map.get(key)}
(其中
key
是一个变量)对我有用。

${map['key']}
似乎仅适用于字符串文字键——如果您正在查找的
key
是一个变量,那么
${map[key]}
似乎不起作用

###访问给定键列表的映射条目### 这是一个完整的示例,在给定

map
的 HashMap
listOfKeys
中查找项目,其中包含我想从映射中获取的元素键的有序列表。像这样使用单独的
listOfKeys
让我可以控制迭代的顺序,并且可以选择仅返回地图中的元素子集:

<ul>
    <li th:each="key: ${listOfKeys}">
        <span th:text="${key}"></span> = <span th:text="${map.get(key)}"></span>
    </li>
</ul>

###循环遍历地图中的每个条目### 如果您没有有序的键列表,而只想循环遍历地图中的每个项,那么您可以直接循环遍历地图的

keySet()
(但是您将无法控制返回的键的顺序,如果你的地图是
HashMap
):

<ul>
    <li th:each="key: ${map.keySet()}">
        <span th:text="${key}"></span> = <span th:text="${map.get(key)}"></span>
    </li>
</ul>

这种用法可以通过简单地迭代映射的

entrySet
并访问每个返回条目的
key
value
成员来表达得更简洁:

<ul>
    <li th:each="entry: ${map}">
        <span th:text="${entry.key}"></span> = <span th:text="${entry.value}"></span>
    </li>
</ul>

25
投票

您可以简单地使用

${map.get('key')}


9
投票

取值方式:

${map[__${key}__]}

必须将键放在双下划线之间,才能对键变量进行预处理。


8
投票

我正在使用以下下拉框来循环地图上的键

<select id="testId">
        <option th:each="item: ${itemsMap}" 
                th:value="${item['key']}"
                th:text="${item['value']}" />
</select>

如果获得特定值,我正在使用

${itemsMap.get('key')}

5
投票

在我的情况下,我有一个

HashMap<String, String>
,我必须像这样进行查找

<strong th:text="${map['__${entry.key}__']}"></strong>

3
投票

访问某个键

keyaccess
的地图值的方法,假设您的模型中有地图
mymap

${mymap['keyaccess']}

这将为您提供与您的条目关联的列表,现在您可以迭代它。

如果需要,您可以按照与迭代任何其他支持的可迭代对象相同的方式迭代映射,来自文档

不仅java.util.List对象可以用于迭代 百里香叶。事实上,有一套相当完整的对象 认为可通过 th:each 属性进行迭代:

  • 任何实现 java.util.Iterable 的对象
  • 任何实现 java.util.Map 的对象。迭代映射时,iter 变量将属于 java.util.Map.Entry 类。
  • 任何数组
  • 任何其他对象都将被视为包含该对象本身的单值列表。

1
投票

remarksMap 是 TreeMap,“id”是 Long 类型值

<div th:if="${#maps.containsKey(remarksMap, id)}">
   <textarea th:text="${remarksMap.get(id)}" rows="2" cols="30" maxlength="250" 
       autocomplete="off"></textarea>                               
</div>

0
投票

所有答案都引导我走向正确的方向。 来自(表列详细信息)的以下代码有效:

<td>[[${statusesMap.get('__${employee.status}__')}]]</td>

statusesMap 是一个地图 Employee 是一个员工类,有一个名为“status”的字段。

注意单引号。没有他们就行不通。

© www.soinside.com 2019 - 2024. All rights reserved.