Я работал над веб-скриптом, который будет переплевывать все папки, подпапки и файлы через веб-страницу Alfresco.
Моя текущая модель JavaScript:
// search for folder within Alfresco content repository
var folder = roothome.childByNamePath("PATH");
// validate that folder has been found
if (folder == undefined || !folder.isContainer) {
status.code = 404;
status.message = "Folder " + " not found.";
status.redirect = true;
}
// construct model for response template to render
model.folder = folder;
Мой ответ JSON создается следующим образом:
<#assign datetimeformat="EEE, dd MMM yyyy HH:mm:ss zzz">
{"corporates" : [
<#list folder.children as child>
{
"folder" : "${child.properties.name}"
}
</#list>
]
}
Этот шаблон Freemarker JSON отвечает следующим образом:
{"corporates" : [
{
"folder" : "Example Folder 1"
}
{
"folder" : "Example Folder 2"
}
{
"folder" : "Example Folder 3"
}
{
"folder" : "Example Folder 4"
}
]
}
Это выглядит великолепно, но мне нужно погрузиться в каждую из этих четырех папок, чтобы отобразить вложенные папки/файлы.
Эти потоки (здесь и здесь) дают примеры того, как перемещаться по папкам, но я не могу получить правильный ответ.
Этот поток Alfresco цитирует, как использовать поиск Lucene для получения всех папок/подпапок/файлов, но я не могу правильно отформатировать его.
Любая помощь или построение на связанных потоках было бы высоко оценено!
Очевидно, вы используете Freemarker для получения ответа; почему бы вам просто не пересечь детей там? Создайте макрос/функцию, которая примет узел, и вернет все его дочерние элементы. Затем вызовите этот макрос столько раз, сколько вам нужно, рекурсивно.
http://docs.alfresco.com/5.2/references/API-FreeMarker-TemplateNode.html
<#macro recurse_macro node depth> <#list node.children?sort_by(["properties","name"]) as child> { "folder" : "${child.properties.name}" }, <#if child.isContainer> { <@recurse_macro node=child depth=depth+1/> } </#if> </#list> </#macro>