1

我们如何使用 webscripts 在 Alfresco 中将输出格式更改为 CSV 而不是 HTML?

下面是我对应的 FTL 和 Webscript 文件


recursive.get.html.ftl

<#macro recurse_macro node depth>
  <#if node.isContainer>
    <tr>
    <td> 
        ${node.properties.name}
    </td>
<td></td>
  </tr>

   <#list node.children as child>
    <#if child.isContainer>

         <@recurse_macro node=child depth=depth+1/>

 <#list child.children as child2>
    <#if child2.isDocument>
     <tr><td></td><td>${child2.properties.name}</td></tr>
       </#if>
 </#list>

    </#if>
   </#list>
  </#if>
</#macro>

空间和文档的递归列表:

空间文件

recursive.get.desc.xml

<webscript>
  <shortname>recurcive</shortname>
  <description>Recursive</description>
  <url>/sample/recursive/{recursive}</url>
  <format default="html">extension</format>
  <authentication>guest</authentication>
  </webscript>

和 html 输出是

Recursive Listing of Spaces & Documents:
Space   Document
Company Home    
Data Dictionary     
Space Templates     
Software Engineering Project    
Documentation   
Drafts  
Pending Approval    
Published   
Samples     
    system-overview.html
Discussions     
UI Design   
Presentations   
Quality Assurance   
Presentation Templates  
    doc_info.ftl
    localizable.ftl
    my_docs.ftl
    my_spaces.ftl
    my_summary.ftl
    translatable.ftl
    recent_docs.ftl
    general_example.ftl
    my_docs_inline.ftl
    show_audit.ftl
    readme.ftl
Email Templates     
    notify_user_email.ftl
    invite_user_email.ftl
RSS Templates   
    RSS_2.0_recent_docs.ftl
Saved Searches  
admin   
Scripts     
    backup.js
    example test script.js
    backup and log.js
    append copyright.js
    alfresco docs.js
    test return value.js
Web Scripts     
org     
alfresco    
sample  
    blogsearch.get.js
    blogsearch.get.atom.ftl
    blogsearch.get.desc.xml
    blogsearch.get.html.ftl
    blogsearch.get.html.400.ftl
    blogsearch.get.atom.400.ftl
    categorysearch.get.js
    categorysearch.get.atom.ftl
    categorysearch.get.desc.xml
    categorysearch.get.html.ftl
    categorysearch.get.html.404.ftl
    categorysearch.get.atom.404.ftl
    folder.get.js
    folder.get.atom.ftl
    folder.get.desc.xml
    folder.get.html.ftl
    avmstores.get.desc.xml
    avmstores.get.html.ftl
    avmbrowse.get.js
    avmbrowse.get.desc.xml
    avmbrowse.get.html.ftl
    recursive.get.desc.xml
    recursive.get.html.ftl
    sgs.get.desc.xml
    sgs.get.csv.ftl
    sample1.get.desc.xml
    sample1.get.csv.ftl
    first.get.desc.xml
    first.get.text.ftl
    rag.get.html.ftl
    rag.get.desc.xml
    new1.get.desc.xml
    new1.get.html.ftl
    excel.get.html.ftl
    excel.get.desc.xml
    sgs1.get.desc.xml
    one.get.html.ftl
    one.get.desc.xml
    one.get.js
    readme.html
Web Scripts Extensions  
    readme.html
Guest Home  
    Alfresco-Tutorial.pdf
User Homes  
isabel  
Users Home  
4

2 回答 2

1

是的,可以输出 csv。参考http://wiki.alfresco.com/wiki/Web_Scripts#Implementation

您需要将您的 desc 文件更改为:

 <webscript>
  <shortname>recurcive</shortname>
  <description>Recursive</description>
  <url>/sample/recursive/{recursive}</url>
  <format default="csv">extension</format>
  <authentication>guest</authentication>
 </webscript>

或者,如果您想将 html 作为您的默认格式,您可以使用 csv 扩展名 (alfresco/service/recursive/blabla.csv) 或格式参数 ?format=csv 调用脚本

然后你创建了一个 recursive.get。csv .ftl 文件如下:

    <#macro recurse_macro node depth>
      <#if node.isContainer>       
            ${node.properties.name}
       <#list node.children as child>         
         <#if child.isContainer>
         ,         
         <@recurse_macro node=child depth=depth+1/>        
          <#list child.children as child2> 
            <#if child2.isDocument>
                ${child2.properties.name}
               <#if child2_has_next>,</#if>
            </#if>
          </#list>            
         </#if>
            \n        
       </#list>
      </#if>
    </#macro>

我还没有测试过代码,但我假设你理解在每个主节点的末尾你需要换行,并且在每个孩子之后(除了最后一个)你需要一个昏迷。

于 2010-08-18T18:21:40.110 回答
0

您可以指定默认输出为 csv。将其放入 webscript 描述文件 (.desc.xml) 扩展名中

然后添加将创建 csv 输出的 recursive.get.xml.ftl。

于 2010-06-17T11:41:59.157 回答