我正在尝试使用以下代码获取文件夹的所有子项(在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。
有人可以查看这个并指导我错误的地方,或者有没有找到文件夹子项的适当方法?
答案 0 :(得分:4)
也可以通过以下方式完成:
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();
}
答案 1 :(得分:3)
getHasMoreItems()方法文档说:
返回存储库是否包含已提取项目页面之外的其他项目。 返回: true =&gt;进一步的页面请求将被发送到存储库
如果返回false,则表示通过调用getChildren()获取的页面已包含此文件夹的所有子项,并且不需要进一步的请求(以获取剩余的子项)。 如果您有一个包含许多子项的文件夹,则可以使用操作上下文来分页结果。 OpenCMIS项目站点提供了适当的example。
如果您不使用分页,则只需致电:
Iterator<CmisObject> it = folder.getChildren().iterator();
while(it.hasNext()) {
CmisObject object = it.next();
// Do something with the child object
}
迭代器应该提供您正在寻找的两个孩子。