キーに基づいてHashMap
の値を取得したい。
HashMap<String, ArrayList<String>> map
= new HashMap<String, ArrayList<String>>();
ArrayList<String> arrayList = new ArrayList<String>();
map.put("key", arrayList);
request.setAttribute("key", map);
私がしたことは
<c:forEach var="map" items="${requestScope.key}">
<c:forEach var="hash" items="${map.value}">
<option><c:out value="${hash}"/></option>
</c:forEach>
</c:forEach>
しかし、それはすべてを印刷しているようです、私がしたいことは、次のようなキーに依存する値を取得することです:hash.key
または何か
更新:
このようなことをしましたが、まだ動作しません
<c:forEach var="map" items="${requestScope.key}">
<c:forEach var="hash" items="${map['key']}">
<option><c:out value="${hash}"/></option>
</c:forEach>
</c:forEach>
およびStackTrace:Property 'External' not found on type Java.util.HashMap$Entry
本当にそのようなキーがあると確信しています。
マップ内の1つのエントリの値を取得するだけであれば、コレクションをループする必要はまったくありません。 gautumの応答をわずかに単純化すると、次のように名前付きマップエントリの値を取得できます。
<c:out value="${map['key']}"/>
ここで、「map」はコレクション、「key」は値を抽出しようとしている文字列キーです。
以下のコードを試してください
<c:forEach var="hash" items="${map['key']}">
<option><c:out value="${hash}"/></option>
</c:forEach>
文字列キーを指定するとjavax.el.PropertyNotFoundExceptionが発生するため、上記のソリューションに問題がありました。以下に示すコードは私のために働いた。これで、ステータスを使用して各ループのインデックスをカウントし、興味のあるインデックスの値を表示しました
<c:forEach items="${requestScope.key}" var="map" varStatus="status" >
<c:if test="${status.index eq 1}">
<option><c:out value=${map.value}/></option>
</c:if>
</c:forEach>