Alfresco:如何在没有文档的情况下使用 ScriptNode processTemplate API?

Alfresco: How to use ScriptNode processTemplate API without a document?

我想在控制器的 webscript 中使用 Freemarker 模板引擎来处理一些表达式。

我看到 Alfresco 提供 document.processTemplate("template content here") API。

文档说:"Executes a template from the repository against the current Document node"

假设我没有任何特定文档要使用,我只想执行模板引擎并检索输出。最好的方法是什么?

我应该使用某种临时文件还是 "proxy" 文件?最简单的方法是什么?

我认为不使用文档是不可能的。因此,请使用数据字典之类的文件夹或创建一个没有您经常使用的内容的虚拟文档。

alfresco 的主要目的是管理 document.What 您将产生的输出类型,而没有文档中任何元数据的价值 template.This 是 alfresco 不支持这背后的主要原因,模板引擎的设计方式使我们可以处理任何文档。

不太明白你在这里的目的,但我认为这是可能的(但不确定为什么有人愿意这样做。)

您自己编写 class 扩展 BaseTemplateProcessorExtension,这样 class 您可以编写一个方法来执行您想要的操作。

public class MyTemplateProcessorExtension extends BaseTemplateProcessorExtension {

  public String myMethod(){
    return "Hello World";
  }
}

在您的 spring 配置中按以下方式声明它。

<bean id="templateHelper" parent="baseTemplateImplementation" class="my.alfresco.repo.template.TemplateHelper">
  <property name="extensionName" value="templateHelper" />
 </bean>

然后你可以从你的 freemarker 调用它:

${templateHelper.myMethod()}

调用 "myMethod" 的 freemarker 模板应该是存储库中的一个节点(也应该可以将它放在 class 路径中,但是我从来没有成功过),因为 processTemplate 需要模板本身的 nodeRef。

好的,请注意。我不向任何人推荐这种方法:)