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
}

イテレータは、探している 2 つの子を提供する必要があります。

于 2012-10-30T14:51:19.163 に答える