AEM(cq5)处理组件内的信息

AEM(cq5)处理组件内的信息

问题描述:

我有一个组件可以获取有关其父资源的一些基本信息。AEM(cq5)处理组件内的信息

var parent = granite.resource.getParent();

我现在试图在伴随我的组件的JavaScript内获取属性“path”(parent.path),但是该数据在脚本内部不可用,但在呈现组件的属性“path”的HTML内可用。

有人能说明为什么它可能在HTML内而不是JavaScript内?

+0

请确保granite.resource.getParent()返回一个Resource或Node类型的对象,以便您可以访问其路径属性,您尝试了: 'var parentPath = currentNode.getParent()。getPath();' http://docs.adobe.com/docs/en/aem/6-0/develop/sightly/global-objects.html – Bambara

+0

hi @Bambara,currentNode.getParent()。getPath();没有工作,但是currentNode.getParent()。path;按预期工作,我能够生成我需要的结构。你知道我在哪里可以找到每个对象可用的所有属性的文档?您提供的链接确实覆盖了通用对象,但没有提供更多有关它们的详细信息。 –

你应该能够currentNode.getParent().getPath();做到这一点

至于你提到(我对geometrixx,户外/ EN /活动/ cajamara-biking.html页面测试这个),您可以访问很多默认对象,这里提到:http://docs.adobe.com/docs/en/aem/6-0/develop/sightly/global-objects.html

这些只是Java支持的对象(完整的类名称在说明字段中)。要了解更多信息,请使用Google的课程名称。例如,currentNode是一个javax.jcr.Node类,其中提供的方法记录在这里:http://www.day.com/specs/jsr170/javadocs/jcr-2.0/javax/jcr/Node.html

为了获得路径,我不得不使用“currentNode.getParent().path”per @ Bambara的说明。

var parent = currentNode.getParent(); 
var path = parent.path; 

我认为currentNode.getParent()。getPath()返回可能无法工作的Java String对象如果你做了一个var path =“”+ currentNode.getParent()。getPath();将路径放在一个Javascript字符串中,不要忘记Rhino是你的Java对象和Javascript脚本之间的中间人,所以任何作为Bean的Java对象都可以使用.path而不是getPath()来访问,因为Rhino会进行转换。所以当你读取.path或者设置.path =“/ some/path”时,Getters和Setters会自动调用,当然这个属性有setter。

在JS服务器端,您可以访问整个Java对象,只需确保您转换为正确的原语,以便您的数据可用。