如何在Alfresco中获取所有儿童文件夹?

时间:2012-10-30 10:12:58

标签: java alfresco cmis

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

有人可以查看这个并指导我错误的地方,或者有没有找到文件夹子项的适当方法?

2 个答案:

答案 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
}

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