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

Sum*_*ore 14 spring-mvc broadleaf-commerce thymeleaf

我有一个Hashmap (String, List<Offers>),传递到Thymeleaf页面.我在页面上获取此地图,我可以访问它.

我怎么能map.get(key)和Thymeleaf一起做?我只需要根据某个键获取值,然后解析并打印该值,我知道并具有该逻辑.

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

Pra*_*hat 18

你可以简单地使用 ${map.get('key')}

  • 我认为代替静态键你也可以传递变量......`<tr th:each ="key:$ {list_of_keys}"> <span> $ {map.get(key)} </ span>` (4认同)
  • 它适用于静态字符串,但你能告诉我如何使用变量来做到这一点吗? (2认同)

Mat*_*ugh 14

使用${map.get(key)}(where 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>
Run Code Online (Sandbox Code Playgroud)

循环遍历地图中的每个条目

如果您没有有序的键列表,但只想循环遍历Map中的每个项目,那么您可以直接遍历地图keySet()(但如果您的地图是a,您将无法控制返回的键的顺序HashMap) :

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

通过简单地遍历entrySet地图,访问每个返回的条目keyvalue成员,可以更简洁地表达这种用法:

<ul>
    <li th:each="entry: ${map}">
        <span th:text="${entry.key}"></span> = <span th:text="${entry.value}"></span>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)


小智 7

访问该值的方法:

${map[__${key}__]}
Run Code Online (Sandbox Code Playgroud)

您必须将键放在加倍的下划线之间,以对键变量进行预处理.


Han*_*akr 6

我正在使用下拉框,例如在地图上循环键

<select id="testId">
        <option th:each="item: ${itemsMap}" 
                th:value="${item['key']}"
                th:text="${item['value']}" />
</select>
Run Code Online (Sandbox Code Playgroud)

在获得特定值的情况下,我正在使用

${itemsMap.get('key')}
Run Code Online (Sandbox Code Playgroud)


fst*_*tef 5

在我的情况下,我有一个HashMap<String, String>,我必须像这样进行查找

<strong th:text="${map['__${entry.key}__']}"></strong>
Run Code Online (Sandbox Code Playgroud)