AEM - Multifield中的xtype'标签'

时间:2015-06-22 04:45:53

标签: cq5 aem

我正在写一个xtype标签的多字段 它的对话是

                <path
                    jcr:primaryType="cq:Widget"
                    fieldLabel="Compare Tags"
                    name="./compareTag"
                    xtype="multifield">
                    <fieldConfig
                        jcr:primaryType="cq:Widget"
                        xtype="tags">
                        <namespaces jcr:primaryType="cq:WidgetCollection">
                            <categorynm
                                jcr:primaryType="nt:unstructured"
                                maximum="1"
                                name="properties"/>
                        </namespaces>
                    </fieldConfig>
                </path>

我第一次打开对话框时工作正常。但是,在页面刷新后,多字段项目将不会有任何预先填充的数据。 在进一步检查时,我发现负责填充数据的json是

"compareTag": [
        "properties:orientation/landscape",
        "properties:style/monochrome",
        "properties:style/color"
    ]

为了显示以前选择的值的对话框,它应该是

"compareTag": [
            [
                "properties:orientation/landscape"
            ],
            [
                "properties:style/monochrome"
            ],
            [
                "properties:style/color"
            ]
        ]

这是因为xtype'tags'本身将它的值存储在多字段中。只能使用OOTB功能来满足此要求。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

简而言之,xtype&#39; Multifield&#39;将所有输入存储为crx中的条目数组。

所以,从技术上讲,我的标签实施&#39;在多字段内部不会工作,因为xtype&#39;标签&#39;本身可以存储标签的多个条目。标签本身作为数组存储在存储库中。

OOTB multifield无法解决此问题。我改变了使用xtype&#39; Multifieldpanel&#39;实现同样的目标。它会工作,因为multifieldpanel会将数据存储为json。

location.reload();

你可以通过互联网找到multifieldpanel.js和迭代字段,用户的JSONObject API。