私は JSF/Facelets を使用しており、HashMap に保持しているいくつかの Document オブジェクト (カスタム オブジェクト) を反復処理しようとしています。ページがロードされると、「タイプ java.util.HashMap$Values にプロパティ 'name' が見つかりません」というエラーが表示されます。これが私のバッキングビーンの内容です:
private Map<String, Document> documents = new HashMap<String, Document>();
public Collection<Document> getDocuments(){
return documents.values();
}
そして私の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>
getDocuments 関数を次のように変更すると機能します (テーブルがエラーなしで表示されることを意味します) が、JSF/Facelets ページを正しく表示するために値をリストに入れる必要がある理由がわかりません。
public List<Document> getDocuments(){
List<Document> rtrn = new ArrayList<Document>();
for(Document doc : documents.values())
rtrn.add(doc);
return rtrn;
}
コレクションを反復処理できないのでしょうか?