我创建了一个 AEM 对话框,提示用户输入一组链接和标签。这些链接和标签存储在jcr节点中,用于生成菜单。
为了避免创建自定义 xtype,我使用acs-commons multifieldpanel解决方案,它使我能够在 fieldConfig 节点下嵌套子项。
这仅适用于 1 个标签/链接对,但是当我添加第二个时 - 无法再获取该属性,因为它返回的不是字符串,而是字符串哈希码。
jcr节点中multifieldpanel生成的属性是String类型,在CRXDE中检查时填写正确。当我尝试从 Sightly HTML 文件中获取值时,就会出现问题。
代码
定义.js:
"use strict";
use(function () {
var CONST = {
PROP_URLS: "definitions",
};
var json = granite.resource.properties[CONST.PROP_URLS];
log.error(json);
return {
urls: json
};
});
日志输出
多字段面板中的 1 个元素
jcr节点变量内容
definitions: {"listText": "facebook", "listPath": "/content/en"}
日志输出
{"linkText":"facebook","linkPath":"/content/en"}
多字段面板中的多个元素
jcr节点变量内容
definitions: {"listText": "facebook", "listPath": "/content/en"},{"listText": "google", "listPath": "/content/en"}
日志输出
[Ljava.lang.String;@7b086b97
结论
一旦多字段面板具有多个组件并存储它,当访问属性时,节点返回字符串哈希码而不是属性的值。
一位同事指出我应该使用MultiFieldPanelFunctions
该类来访问属性,但我们正在使用 HTML+Sightly+js 并且不惜一切代价尝试避免使用 .jsp 文件。在 JavaScript 中,此功能不可用。有谁知道如何解决这个问题?