如何递归显示所有文件和子文件夹?

时间:2018-03-17 21:13:57

标签: alfresco

我正在使用Alfresco Rest Api,但我找不到任何可以返回包含所有子文件夹的整个树的选项。

即使它被“包裹”在3个子文件夹中,我想要查看最后一个文件。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

我认为你不能。

您可以执行PATH查询,因为它也可以以返回所有孩子的方式编写。

例如:

var folder = search.luceneSearch("+PATH:\"/app:company_home/cm:Test_x0020_Folder//*\" AND (TYPE:\"cm:content\" OR TYPE:\"cm:folder\")");

答案 1 :(得分:1)

创建一个java烘焙的webscript,它将返回下面对象的节点。

public class ReportNode {

    private NodeRef currentNode;
    private List<ReportNode> children;
    private Map<String, String> properties = new HashMap<>();
    private boolean isFolder;
    private String name;
    private String type;
    private List<String> aspects;
//Getter Setters
}

在上述结构中 currentNode 表示列表中的当前节点 子级代表节点的子级

其他事情都很清楚。

通过节点抓取填写上述链表结构中的数据。

用于显示已抓取的数据。您可以使用以下自由标记模板。

<#macro recurse_macro nodeRef>
    <ul>
        <li> 
                <@print_properties reportNode=nodeRef/>
        </li>
     </ul>
</#macro>

<#macro print_properties reportNode>
        <ul>
            <li> 
                <a>Properties</a>
                    <ul>
                        <#list reportNode.properties?keys as key> 
                                        <li>${key} : ${reportNode.properties[key]}
                        </#list>

                    </ul>
            </li>
         </ul>
</#macro>

<@recurse_macro nodeRef=nodeRef/>

其中noderef是链接列表的根节点,它是通过爬网节点创建的。

答案 2 :(得分:1)

请参考categoryService列出任何嵌套子文件夹中的所有文件。这里 nodeRef是父文件夹的noderef

使用categoryService,还可以列出文件夹的所有子项。

Collection<ChildAssociationRef> children = categoryService.getChildren(new NodeRef(nodeRef), CategoryService.Mode.ALL, CategoryService.Depth.ANY);

答案 3 :(得分:0)

要检索所有文件,您可以使用此服务

enter image description here

或者您可以创建自定义webscript并递归获取节点,例如:

t.holder