AEM (cq5) 使用组件内的信息

AEM (cq5) Working with information within a component

我有一个组件,我可以在其中获取有关其父资源的一些基本信息。

var parent = granite.resource.getParent();

我现在正尝试在我的组件随附的 JavaScript 中获取 属性 "path" (parent.path) 但是数据在脚本中不可用但是在呈现组件的 HTML 中,属性 "path" 可用。

有人能解释一下为什么在 HTML 内可行,而在 JavaScript 内不行吗?

为了获得路径,我必须根据@Bambara 的说明使用 "currentNode.getParent().path"。

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

你应该可以用 currentNode.getParent().getPath(); 来做到这一点(我已经在 geometrixx-outdoors/en/activities/cajamara-biking.html 页面上测试过了)

如您所述,您可以访问此处提到的许多默认对象:http://docs.adobe.com/docs/en/aem/6-0/develop/sightly/global-objects.html

这些只是 Java 支持的对象(完整的 class 名称在描述字段中)。要了解更多信息,Google class 姓名。例如,currentNode 是一个 javax.jcr.Node class,其上可用的方法记录在此处:http://www.day.com/specs/jsr170/javadocs/jcr-2.0/javax/jcr/Node.html

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

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