我正在使用 JSF/Facelets,我正在尝试迭代一些我保存在 HashMap 中的 Document 对象(自定义对象)。加载页面时,我收到错误“在 java.util.HashMap$Values 类型上找不到属性‘名称’”。这是我的支持 bean 中的内容:
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;
}
我不应该能够迭代集合吗?