2012-10-30 65 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(); 
    }