ArrayList型のオブジェクトを返すJSFバッキングBeanがある場合、<c:foreach>
を使用してリスト内の要素を反復処理できるはずです。各要素にはマップが含まれており、JSTLを介してマップコンテンツにアクセスする方法の質問は回答されていますが here ですが、そのようなマップの配列を渡すと、それらを反復する方法が見つかりません。 JSTLを使用して引き続きマップコンテンツにアクセスします。単純なイテレータについて言及しているドキュメントがありますが、アイテム自体がマップであるイテレータについては言及していません。
Java ListがJSPで繰り返される方法の簡単な例を誰かに教えていただければ、とても感謝しています。マーク
マーク、これはすでに 前のトピック で回答されています。しかし、OK、ここに再びあります:
${list}
がList<Object>
を指している場合、次のようになります
<c:forEach items="${list}" var="item">
${item}<br>
</c:forEach>
基本的に、「通常のJava」の以下と同じです。
for (Object item : list) {
System.out.println(item);
}
代わりにList<Map<K, V>>
がある場合、次のようになります
<c:forEach items="${list}" var="map">
<c:forEach items="${map}" var="entry">
${entry.key}<br>
${entry.value}<br>
</c:forEach>
</c:forEach>
基本的に、「通常のJava」の以下と同じです。
for (Map<K, V> map : list) {
for (Entry<K, V> entry : map.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
key
とvalue
は、ここでは特別なメソッドなどではありません。これらは、実際にはゲッターメソッドです Map.Entry
オブジェクト(青色のMap.Entry
リンクをクリックしてAPIドキュメントを表示します)。 EL(Expression Language)では、.
ドット演算子を使用して、「プロパティ名」(get
プレフィックスなしのゲッターメソッド名)を使用してゲッターメソッドにアクセスできます。
そうは言っても、質問にノイズが加わるため、前のトピックの「回答」をクリーンアップする必要があります。 「回答」に投稿したコメントもお読みください。
これを試して
<c:forEach items="${list}" var="map">
<tr>
<c:forEach items="${map}" var="entry">
<td>${entry.value}</td>
</c:forEach>
</tr>
</c:forEach>