Ich benutze JSF/Facelets, und ich versuche, über einige Document-Objekte (benutzerdefiniertes Objekt), die ich in einer HashMap behalte. Wenn die Seite geladen wird, erhalte ich den Fehler "Name der Eigenschaft 'wurde nicht gefunden bei Typ java.util.HashMap $ Values". Hier ist, was ist in meinem Backing Bean:Iterate über HashMap.values () in JSF + Facelets
private Map<String, Document> documents = new HashMap<String, Document>();
public Collection<Document> getDocuments(){
return documents.values();
}
Und in meiner xhtml Seite:
<h:dataTable id="documentTable"
value="#{DocumentManager.allDocuments}"
var="doc" rowClasses="list-row-odd, list-row-even"
headerClass="table-header" styleClass="bordered">
<h:column id="col_name">
<f:facet name="header">Name</f:facet>
${doc.name}
</h:column>
</h:dataTable>
Wenn ich die GetDocuments Funktion der folgenden ändern, es funktioniert (dh die Tabelle ohne Fehler angezeigt wird), aber Ich bin mir nicht sicher, warum ich die Werte in die Liste setzen muss, damit die JSF/Facelets-Seite richtig angezeigt wird.
public List<Document> getDocuments(){
List<Document> rtrn = new ArrayList<Document>();
for(Document doc : documents.values())
rtrn.add(doc);
return rtrn;
}
Sollte ich nicht in der Lage sein, über die Sammlung zu iterieren?
Ein beiseite, ich denke, Sie können einfach anrufen: zurückgeben neue ArrayList (document.values ()) –
Josh