node.processTemplate ftl可以使用include命令吗?

时间:2012-05-29 16:02:41

标签: javascript freemarker alfresco

我正在尝试在使用Javascript API的方法proccessTemplate(http://wiki.alfresco.com/wiki/4.0_JavaScript_API#Transformation_API处理的freemarker模板中使用一个简单的< #include“anotherFile.ftl”/> )针对特定节点。

似乎不喜欢包含?!

错误信息如下

  

Wrapped Exception(带状态模板):04305890无法执行   脚本   '的classpath *:露天/扩展/模板/ webscripts / mypath中/ myWebscript.get.js':   04305889处理模板时出错(错误读取)   包含文件字符串://fooy/foo.ftl'。请联系您的系统   管理员。

正在处理的模板和可能包含的模板将存储在Alfresco的存储库之外,但现在它位于那里。 webscripts也将位于存储库之外且位于Java类路径中。

我试图包含ftl,即使它位于同一目录中,但这不起作用。我试图得到一个node.nodeRef(成功),但实际包含不起作用,虽然这意味着将ftl存储在我们不会做的存储库中。

我确实尝试将ftl包含在实际的webscripts freemarker本身上,但当然node.processTemplate发生在javascript控制器中,然后才传递给webscript freemarker模板

我甚至尝试对include的内容进行硬编码并将其传递给args关联数组,并且正如预期的那样它不起作用。

进一步调查显示这是一个错误 https://issues.alfresco.com/jira/browse/ALFCOM-3364

如果有人克服了这个问题,欢迎提出任何其他建议。

由于

1 个答案:

答案 0 :(得分:1)

如果这是一个webscript,那么我猜你的路径不对。

例如:我有一个webscript foo。它将出现在alfresco/extension/templates/webscripts/org/test/中 所以我将拥有foo.get.desc.xml,foo.get.js和foo.get.html.ftl。

我在alfresco / extension / templates / webscripts / org / common / common.ftl中有一个共同的freemarker模板

然后我需要将<#include "/org/common/common.ftl" />放在foo.get.html.ftl freemarker中。

因此您需要设置alfresco/extension/templates/webscripts

的路径