Yalnızca <c:forEach>
, Map
desteklerini destekler. Her yineleme, bir Map.Entry
örneği geri verir (normal bir Java for
döngüsünde olduğu gibi).
<c:forEach items="#{yourBean.map}" var="entry">
<li>Key: #{entry.key}, value: #{entry.value}</li>
</c:forEach>
<h:dataTable>
(ve <ui:repeat>
) sadece List
destekler (JSF 2.2 Collection
desteği ile gelecek). Tüm anahtarları ayrı bir List
kopyalayıp bunun yerine yineleyin ve sonra yinelenen anahtarı kullanarak EL'de []
kullanarak ilişkili değeri elde edin.
private Map<String, String> map;
private List<String> keyList;
public void someMethodWhereMapIsCreated() {
map = createItSomeHow();
keyList = new ArrayList<String>(map.keySet());
}
public Map<String, String> getMap(){
return map;
}
public List<String> getKeyList(){
return keyList;
}
<h:dataTable value="#{yourBean.keyList}" var="key">
<h:column>
Key: #{key}
</h:column>
<h:column>
Value: #{yourBean.map[key]}
</h:column>
</h:dataTable>
bir HashMap
sırasız doğası gereği olduğunu olmalıdır kaydetti. Ekleme siparişini korumak istiyorsanız, List
ile olduğu gibi, bunun yerine LinkedHashMap
kullanın.
Teşekkürler iyi çalışıyor ... – Sweety
hoşgeldiniz :) –
BalusC tarafından yapılan değişiklikler benim için önemliydi +1 BalusC – user1156544