名称空间未附加在CQ中包含的选项卡的字段名称中

时间:2016-08-03 15:36:29

标签: xml namespaces cq5 aem

在使用CQ 5.4时,我开发了一个组件,其中包含两个包含相同字段的选项卡的对话框,并且我复制了难以维护的代码,因此我决定将选项卡分成新的.xml并包含他们与cqinclude

我读了herehere,可以定义命名空间,并且它将用于为字段名称添加前缀;但是当我尝试时,似乎没有包含任何前缀,并且字段中的值是"重复的" (我猜他们每个标签都会保存一次)。

这是我的代码的简化版本:

dialog.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
          jcr:primaryType="cq:Dialog"
          height="500"
          width="600">
  <items
         jcr:primaryType="cq:TabPanel"
         activeTab="{Long}0">
    <items jcr:primaryType="cq:WidgetCollection">
      <image0-tab
                  jcr:primaryType="cq:Widget"
                  path="/apps/acme/components/mycomponent/dialogTileTab.cqinclude.namespace.image0.infinity.json"
                  xtype="cqinclude"/>
      <image1-tab
                  jcr:primaryType="cq:Widget"
                  path="/apps/acme/components/mycomponent/dialogTileTab.cqinclude.namespace.image1.infinity.json"
                  xtype="cqinclude"/>
    </items>
  </items>
</jcr:root>

dialogTileTab.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
          jcr:primaryType="cq:Widget"
          title="Tile"
          xtype="panel">
  <items jcr:primaryType="cq:WidgetCollection">
    <buttontitle
                 jcr:primaryType="cq:Widget"
                 defaultValue="Click Me"
                 fieldLabel="Button Text"
                 name="./button"
                 xtype="textfield"/>
    <titlecolor
                jcr:primaryType="cq:Widget"
                defaultValue="blue"
                fieldLabel="Button Color"
                name="./color"
                type="select"
                xtype="selection">
      <options jcr:primaryType="cq:WidgetCollection">
        <o0
            jcr:primaryType="nt:unstructured"
            text="Red"
            value="red"/>
        <o1
            jcr:primaryType="nt:unstructured"
            text="Green"
            value="green"/>
        <o2
            jcr:primaryType="nt:unstructured"
            text="Cadillac Blue"
            value="blue"/>
      </options>
    </titlecolor>
  </items>
</jcr:root>

有了这个,我可以正确地看到对话框和选项卡,但是在保存信息时会出现问题,因为两个选项卡中的字段具有相同的名称,而不是单独保存,它们被连接并保存在一起。例如,如果我有一个文本字段并且在tab1中我写了#34; text1&#34;并且在tab2中我写了#34; text2&#34;,当我保存重新打开时,两个选项卡中的值将是&#34; text1,text2&#34;。

到目前为止,我只对dialog.xml和新标签xml进行了更改。我错过了这些或其他文件中的某些内容或某些设置吗?我是否需要包含任何捆绑包?它可以是一般/服务器设置还是只能在组件级别完成?

1 个答案:

答案 0 :(得分:2)

这不是OOTB功能,需要在实例中安装ACS AEM Commons Package。

以下是您在问题中提到的this link如何使用部分的摘录。

  

首先,您需要安装acs aem commons包   (CQInclude命名空间自版本1.10.2起可用。)

可以获取基于您当前正在运行的AEM版本的相应版本here