Tôi đang sử dụng JSF/Facelets và tôi đang cố gắng lặp qua một số đối tượng Tài liệu (đối tượng tùy chỉnh) mà tôi đang lưu trong HashMap. Khi trang được tải, tôi nhận được lỗi "Tên thuộc tính" không tìm thấy trên loại java.util.HashMap $ Values ". Dưới đây là những gì trong đậu ủng hộ tôi:Lặp lại trên HashMap.values () trong JSF + Facelets
private Map<String, Document> documents = new HashMap<String, Document>();
public Collection<Document> getDocuments(){
return documents.values();
}
Và trong trang xhtml của tôi:
<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>
Nếu tôi thay đổi getDocuments chức năng để điều sau đây, nó hoạt động (có nghĩa là bảng được hiển thị mà không có lỗi), nhưng Tôi không chắc tại sao tôi cần đặt các giá trị trong danh sách cho trang JSF/Facelets để hiển thị đúng.
public List<Document> getDocuments(){
List<Document> rtrn = new ArrayList<Document>();
for(Document doc : documents.values())
rtrn.add(doc);
return rtrn;
}
Tôi không thể lặp qua Bộ sưu tập?
Một bên, tôi nghĩ bạn chỉ có thể gọi: trả về ArrayList (document.values ()) mới –
Josh