1

我正在尝试使用以下代码获取文件夹的所有子项(在 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。

有人可以调查一下并指导我哪里错了,或者有什么合适的方法可以找到文件夹的孩子吗?

4

2 回答 2

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();
    }
于 2012-11-01T13:06:39.667 回答
3

getHasMoreItems() 方法文档说:

返回存储库是否包含超出已获取项目页面的其他项目。返回:true => 将向存储库发出更多页面请求

如果它返回 false,则意味着您通过调用 getChildren() 获取的页面已经包含此文件夹的所有子级,并且不需要进一步的请求(获取剩余的子级)。如果您有一个包含很多子文件夹的文件夹,您可以使用操作上下文来分页结果。OpenCMIS 项目站点提供了一个适当的示例

如果您不使用分页,则只需调用:

Iterator<CmisObject> it = folder.getChildren().iterator();

while(it.hasNext()) {
  CmisObject object = it.next();

  // Do something with the child object
}

迭代器应该提供您正在寻找的两个孩子。

于 2012-10-30T14:51:19.163 回答