içeren bir harita üzerinde yinelemeMTU 1,2-1,2</strong> JSF <strong>ve <strong>JSP</strong> .... Kullanarak Koleksiyonları
kimin değerleri Koleksiyonları içerirler bir harita üzerinde yineleme yapmak mümkün mü? Ben myMap üzerinde yineleme ve her anahtar için ayrı bir tablo çizmek istiyoruz
Map<String, List<Foo>> myMap;
:
ben şöyle bir harita var.
Her tablo birden fazla satırı gösterecektir.
Her satır, geçerli anahtarla eşleştirilen ArrayList öğesinden bir Foo nesnesini temsil edecektir.
Ne yazık ki JSF 1.2 ve JSP kullanıyoruz.
Yuvalanmış bir <h:dataTable>
etiketini kullanabileceğimi umuyordum, ancak hiç bir başarım yok.
Düzenleme:
javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
<c:forEach items="#{someModule$someBean.prefMap}" var="mapEntry">
<br/><br/><p>Key: <h:outputText value="#{mapEntry.key}"/></p>
<h:dataTable value="#{mapEntry.value}" var="pref">
<h:column><h:outputText value="#{pref.defaultFieldLabel}"/></h:column>
<h:column><h:outputText value="#{pref.fieldLabel}"/></h:column>
</h:dataTable>
</c:forEach>
Aşağıdaki istisna neden olur: Burada
BalusC yanıtını danıştıktan sonra benim şimdiki JSP koduYönetilen Bean'imden bazı kodlar. Ben HashMap ve ArrayList yerine Harita ve Listesini kullanıyorum
Not
önce dumpMapInfo
çağrılması
private HashMap<String, ArrayList<Foo>> prefMap;
public HashMap<String, ArrayList<Foo>> getPrefMap()
{
if (prefMap == null)
{
buildPrefMap();
}
return prefMap;
}
private void buildPrefMap()
{
prefMap = new HashMap<String, ArrayList<Foo>>();
for (Foo mdp : getFooArray())
{
String cat = mdp.getField().getCategory();
if (! prefMap.containsKey(cat))
{
ArrayList<Foo> mpl = new ArrayList<Foo>();
mpl.add(mdp);
prefMap.put(cat, mpl);
}
else
{
prefMap.get(cat).add(mdp);
}
}
}
private void dumpMapInfo()
{
StringBuilder sb = new StringBuilder();
Map<String, ArrayList<Foo>> theMap = getPrefMap();
for (String key : theMap.keySet())
{
sb.append(key + ": " + theMap.get(key).size());
}
System.out.println("\n\n" + sb.toString());
}
(Ben de çalışmayan arabirimleri, kullanamadı okumuştum) Bu sayfanın oluşturulması, Haritanın boş olmadığını ve beklendiği gibi doldurulduğunu doğrular.
Üzgünüm, JSF 1.2 bölümünü kaçırdım. Bu yararlı olabilir: http://stackoverflow.com/a/8552872/880619 –
Ne yazık ki JSP kullanıyoruz (Facelets değil). – jahroy