我正在尝试使用以下代码
来获取文件夹的所有孩子(在alfresco服务器中创建的文件夹)//Path is the path to the location of the folder in alfresco server
String folderId = session.getObjectByPath(path).getId();
Folder folder = (Folder) session.getObject(folderId);
if(folder.getChildren()!= null) {
ItemIterable<CmisObject> childFolderIterable = folder.getChildren();
if(childFolderIterable.getHasMoreItems()) {
Iterator<?> childFolders = childFolderIterable.iterator();
while(childFolders.hasNext()) {
Folder subChildFolder = (Folder) childFolders.next();
getChildrenRepositories(subChildFolder);
}
}
}
现在我的问题是,Alfresco的文件夹包含2个不同的子文件夹,但以下代码 ChildFolderIterable.gethasmoreitems()返回false。
有人可以调查一下,并指导我在哪里错了或有任何适当的方法可以找到文件夹的孩子?
也可以通过以下方式完成:
for(CmisObject obj: folder.getChildren()) {
System.out.println("Name: " + obj.getName());
System.out.println("Id: " + obj.getId());
System.out.println("Type: " + getType(obj.getType()));
System.out.println();
}
gethasmoreitems()方法文档说:
返回存储库是否包含超出已经获取的项目页面之外的其他项目。 返回: true =>将向存储库提出更多页面请求
如果它返回false,则意味着您通过调用getChildren()获取的页面已包含该文件夹的所有孩子,并且不需要进一步的请求(要获得其余的孩子)。如果您有一个带有很多孩子的文件夹,则可以使用操作上下文对结果进行分页。OpenCMIS项目网站提供了一个适当的示例。
如果您不使用分页,则只需致电:
Iterator<CmisObject> it = folder.getChildren().iterator();
while(it.hasNext()) {
CmisObject object = it.next();
// Do something with the child object
}
迭代器应为您要寻找的两个孩子提供。