web-dev-qa-db-ja.com

Thymeleafで「map.get(key)」を使用する方法-Broadleaf Ecom

Thymeleafページに渡されるHashmap (String, List<Offers>)があります。このマップをページで取得しており、アクセスできます。

Thymeleafでmap.get(key)を実行するにはどうすればよいですか?特定のキーに基づいて値を取得し、その値を解析して出力するだけです。

Broadleafアプリケーションを実行しており、ThymeleafがそのUIエンジンです。

14
Sumit Rathore

単に${map.get('key')}を使用できます

17
Prabhat

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

マップ内のすべてのエントリをループする

キーの順序付きリストがなく、マップ内のeveryアイテムをループするだけの場合、マップの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>
12
Matt Coubrough

値にアクセスする方法:

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

キー変数の前処理を行うには、二重アンダースコアの間にキーを配置する必要があります。

7
Vlad

私の状況では、HashMap<String, String>、私はこのようなルックアップをしなければならなかった

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

たとえば、マップ上のキーをループするために、次のドロップダウンボックスを使用しています

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

特定の値を取得する場合、私は使用しています

${itemsMap.get('key')}
2
Hany Sakr

モデルにマップkeyaccessがあると仮定して、特定のキーmymapのマップ値にアクセスする方法:

${mymap['keyaccess']}

これにより、エントリに関連付けられたリストが得られますが、今ではそれを繰り返すことができます。

必要に応じて、 documentation から、サポートされている他の反復可能なオブジェクトを反復するのと同じ方法でマップを反復できます。

Thymeleafでの反復に使用できるのは、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
R M