Estoy usando JSF/Facelets, y estoy tratando de iterar sobre algunos objetos de documento (objeto personalizado) que guardo en un HashMap. Cuando se carga la página, obtengo el error "Propiedad 'nombre' no encontrado en tipo java.util.HashMap $ Valores". Esto es lo que está en mi respaldo frijol:Iterar sobre HashMap.values () en JSF + Facelets
private Map<String, Document> documents = new HashMap<String, Document>();
public Collection<Document> getDocuments(){
return documents.values();
}
Y en mi página 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>
Si cambio la función getDocuments a la siguiente, que funciona (es decir, la tabla se muestra sin errores), pero No estoy seguro de por qué tengo que poner los valores en la lista para que la página JSF/Facelets se muestre correctamente.
public List<Document> getDocuments(){
List<Document> rtrn = new ArrayList<Document>();
for(Document doc : documents.values())
rtrn.add(doc);
return rtrn;
}
¿No debería poder iterar sobre la colección?
Aparte, creo que puede llamar: devolver nuevo ArrayList (document.values ()) –
Josh