我有Hashmap (String, List<Offers>)
,传递给Thymeleaf页面。我在页面上得到了这张地图,我可以访问它。
我如何用Thymeleaf做map.get(key)
?我只需要根据某个键获取值,然后解析并打印该值,我知道并具有逻辑。
我正在运行Broadleaf应用程序,而Thymeleaf是它的UI引擎。
答案 0 :(得分:17)
您只需使用${map.get('key')}
答案 1 :(得分:12)
使用${map.get(key)}
(其中key
是变量)对我有用。
${map['key']}
似乎只适用于字符串文字键 - 如果您查找的key
是变量,那么${map[key]}
似乎无法正常工作。
这是一个完整的示例,查找HashMap map
中的项目给定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>
答案 2 :(得分:6)
访问该值的方法:
${map[__${key}__]}
您必须将密钥放在加倍的下划线之间,以便对密钥变量进行预处理。
答案 3 :(得分:3)
在我的情况下,我有一个HashMap<String, String>
,我必须像这样进行查找
<strong th:text="${map['__${entry.key}__']}"></strong>
答案 4 :(得分:2)
我正在使用下拉框,例如在地图上循环键
<select id="testId">
<option th:each="item: ${itemsMap}"
th:value="${item['key']}"
th:text="${item['value']}" />
</select>
如果获得特定值,我正在使用
${itemsMap.get('key')}
答案 5 :(得分:1)
访问某个键keyaccess
的地图值的方式,假设您的模型中有地图mymap
:
${mymap['keyaccess']}
这将为您提供与您的条目相关联的列表,现在您可以迭代它。
如果您需要,您可以使用与documentation中的任何其他受支持的可迭代对象相同的方式迭代地图:
不仅可以使用java.util.List对象进行迭代 Thymeleaf。事实上,有一套相当完整的对象 被认为是可迭代的:每个属性:
- 任何实现java.util.Iterable
的对象- 任何实现java.util.Map的对象。迭代映射时,iter变量的类型为java.util.Map.Entry。
- 任何阵列
- 任何其他对象都将被视为包含对象本身的单值列表。
答案 6 :(得分:0)
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>