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

时间:2015-02-20 03:45:46

标签: spring-mvc thymeleaf broadleaf-commerce

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

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

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

7 个答案:

答案 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并访问每个返回的条目keyvalue成员,可以更简洁地表达此用法:

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