Alfresco ScriptNode函数getAspectsShort缺失/未定义

时间:2014-02-19 10:47:43

标签: alfresco

首先,我正在运行V4.2.e社区版。 我有以下webscript / free marker模板(ftl)来检索某个节点的方面,

[
  <#list node.aspects as aspect>
    ${jsonUtils.toJSONString(aspect)}<#if aspect_has_next>, </#if>
  </#list>
]

使用以下js部分:

var docid = url.extension;
model.node = search.findNode(docid);

完美无缺。它返回类似于:

[
  "http://www.alfresco.org/model/content/1.0}titled"
]

但我想:

[
  "cm:titled"
]

在下面的ScriptNode API中,我找到了一个名为“getAspectsShort”的类似函数:
Alfresco Community 4.2 Documentation - Script Node

显然,java类中有后端函数:
ScriptNode.java

我尝试以下列方式使用它:

[
  <#list node.getAspectsShort as aspect>
    ${jsonUtils.toJSONString(aspect)}<#if aspect_has_next>, </#if>
  </#list>
]

并在catalina.out中找到以下消息:

Caused by: org.alfresco.service.cmr.repository.TemplateException: 011933961 Fehler bei der Verarbeitung der Mustervorlage 'Expression node.getAspectsShort is undefined on line 2, column 12 in aspe ct.get.json.ftl.'. Bitte wenden Sie sich an Ihren Systemadministrator. at org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:222) at org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:896) at org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:267) at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:147) ... 28 more Caused by: freemarker.core.InvalidReferenceException: Expression node.getAspectsShort is undefined on line 2, column 12 in aspect.get.json.ftl. at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:100) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.Environment.process(Environment.java:199) at org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:218) ... 31 more




任何帮助将不胜感激,
奥利弗

2 个答案:

答案 0 :(得分:3)

您好,您指的是JavaScript API,但您正在使用Freemarker对象来检索数据。因此,并非所有JavaScript方法都在Freemarker中实现。

因此,请在JavaScript控制器中使用node.aspectsShort,并将值传递给模型对象到Freemarker模板。

以下是Template node API的参考wiki 以及docs

中的引用

答案 1 :(得分:1)