Używam JSF/Facelets i próbuję iterować nad niektórymi obiektami Document (obiekt niestandardowy), które przechowuję w HashMap. Po wczytaniu strony otrzymuję komunikat o błędzie "Nazwa właściwości" nie została znaleziona w typie java.util.HashMap $ Values ". Oto co jest w moim podkładowej Fasola:Powtórz nad HashMap.values () w JSF + Facelets
private Map<String, Document> documents = new HashMap<String, Document>();
public Collection<Document> getDocuments(){
return documents.values();
}
A w mojej strony xhtml:
<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>
Gdybym zmienić funkcję getDocuments do następujących, to działa (czyli tabela jest wyświetlany bez błędów), ale Nie jestem pewien, dlaczego muszę umieścić wartości na liście, aby strona JSF/Facelets była poprawnie wyświetlana.
public List<Document> getDocuments(){
List<Document> rtrn = new ArrayList<Document>();
for(Document doc : documents.values())
rtrn.add(doc);
return rtrn;
}
Czy nie powinienem móc powtarzać kolekcji?
Pomiń, myślę, że możesz po prostu zadzwonić: return new ArrayList (document.values ()) –
Josh