2012-10-30 38 views
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);    
    } 
    } 
} 

我的问题试图让文件夹(在露天服务器创建的文件夹)的所有孩子是夹在露天包含2个不同的子文件夹,但下面的代码 childFolderIterable .getHasMoreItems() 返回false。

有人可以看看这个,并指导我在哪里我错了或有任何适当的方式来找到该文件夹​​的孩子?

+0

其中露天的版本是您使用? – skuro

回答

3

的getHasMoreItems()方法的文件说:库

返回是否含有超出项目已取出的页附加项。 返回: 真正=>进一步页面请求将到存储库

如果返回false做,就意味着你的页面调用的getChildren(获取)包含已在此文件夹的所有儿童,并没有进一步的请求(以获得剩余的孩子)是必需的。 如果您有一个包含大量子项的文件夹,则可以使用操作上下文对结果进行分页。 OpenCMIS项目站点提供了合适的example

如果使用无分页,然后只需拨打:

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

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

    // Do something with the child object 
} 

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

+0

谢谢@gclaussn你的解决方案工作.. :) – Milesh

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(); 
    }