我有一个
Hashmap (String, List<Offers>)
,已传递到 Thymeleaf 页面。我在页面上找到了这张地图,并且可以访问它。
如何使用 Thymeleaf 实现
map.get(key)
?我只需要根据某个键获取值,然后解析并打印该值,我知道该值并具有其逻辑。
我正在运行 Broadleaf 应用程序,Thymeleaf 是它的 UI 引擎。
使用
${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>
您可以简单地使用
${map.get('key')}
取值方式:
${map[__${key}__]}
必须将键放在双下划线之间,才能对键变量进行预处理。
我正在使用以下下拉框来循环地图上的键
<select id="testId">
<option th:each="item: ${itemsMap}"
th:value="${item['key']}"
th:text="${item['value']}" />
</select>
如果获得特定值,我正在使用
${itemsMap.get('key')}
在我的情况下,我有一个
HashMap<String, String>
,我必须像这样进行查找
<strong th:text="${map['__${entry.key}__']}"></strong>
访问某个键
keyaccess
的地图值的方法,假设您的模型中有地图mymap
:
${mymap['keyaccess']}
这将为您提供与您的条目关联的列表,现在您可以迭代它。
如果需要,您可以按照与迭代任何其他支持的可迭代对象相同的方式迭代映射,来自文档:
不仅java.util.List对象可以用于迭代 百里香叶。事实上,有一套相当完整的对象 认为可通过 th:each 属性进行迭代:
- 任何实现 java.util.Iterable 的对象
- 任何实现 java.util.Map 的对象。迭代映射时,iter 变量将属于 java.util.Map.Entry 类。
- 任何数组
- 任何其他对象都将被视为包含该对象本身的单值列表。
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>
所有答案都引导我走向正确的方向。 来自(表列详细信息)的以下代码有效:
<td>[[${statusesMap.get('__${employee.status}__')}]]</td>
statusesMap 是一个地图
注意单引号。没有他们就行不通。