Alfresco ScriptNode函数getAspectsShort缺失/未定义

Alfresco ScriptNode函数getAspectsShort缺失/未定义,alfresco,Alfresco,首先,我运行的是V4.2.e社区版。 我使用以下webscript/free marker模板(ftl)从某个节点检索方面 [ <#list node.aspects as aspect> ${jsonUtils.toJSONString(aspect)}<#if aspect_has_next>, </#if> </#list> ] 它工作得很好。它返回类似于: [ "http://www.alfresco.org/mode

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

[
  <#list node.aspects as aspect>
    ${jsonUtils.toJSONString(aspect)}<#if aspect_has_next>, </#if>
  </#list>
]
它工作得很好。它返回类似于:

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

[
  "cm:titled"
]
在下面的ScriptNodeAPI中,我发现了一个类似的函数,名为“
getAspectsShort
”:

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

我的用户尝试以以下方式使用它:

[
  <#list node.getAspectsShort as aspect>
    ${jsonUtils.toJSONString(aspect)}<#if aspect_has_next>, </#if>
  </#list>
]
[
${jsonUtils.toJSONString(方面)},
]
并在catalina.out中找到以下消息:


原因:org.alfresco.service.cmr.repository.TemplateException:011933961 Fehler bei der Verarbeitung der MusterVoltage的表达式节点。未在aspe中第2行第12列定义getAspectsShort
ct.get.json.ftl。我是系统管理员。
位于org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:222)
位于org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:896)
位于org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:267)
位于org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:147)
... 28多
原因:freemarker.core.InvalidReferenceException:Expression node.getAspectsShort在aspect.get.json.ftl的第2行第12列中未定义。
位于freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
在freemarker.core.IteratorBlock.accept(IteratorBlock.java:100)中
访问(Environment.java:221)
位于freemarker.core.MixedContent.accept(MixedContent.java:92)
访问(Environment.java:221)
位于freemarker.core.Environment.process(Environment.java:199)
位于org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:218)
... 还有31个




任何帮助都将不胜感激,

Oliver

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

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

这是网站的参考维基
以及

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

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

这是网站的参考维基 而

中的引用可以使用shortQName

${shortQName(jsonUtils.toJSONString(aspect))}
您可以使用shortQName

${shortQName(jsonUtils.toJSONString(aspect))}

你说得对。谢谢它在javascript控制台中也能很好地工作。很酷,如果它能工作,那么请接受答案:)你是对的。谢谢它在javascript控制台中也能很好地工作。很酷,如果它能工作,请接受答案:)