Während der Arbeit an CQ 5.4, entwickelte ich eine Komponente, die Dialog mit zwei Registerkarten hatte die gleichen Felder, und ich war Code zu duplizieren, die es schwierig zu pflegen machte, also ich entschied sich, die Registerkarten in eine neue .xml zu trennen und sie mit cqinclude
einzuschließen.Namespace ist nicht in Feldnamen der Registerkarte in CQ enthalten
Ich lese here und here, dass es möglich ist, einen Namespace zu definieren, und dass es verwendet würde, um den Feldnamen voranzukommen; aber wenn ich versuche, scheint kein Präfix enthalten zu sein, und die Werte in den Feldern sind "dupliziert" (ich denke, sie werden einmal für jede Registerkarte gespeichert).
Dies ist eine vereinfachte Version von meinem Code:
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>
Damit kann ich den Dialog und die Registerkarten richtig, Das Problem tritt jedoch beim Speichern der Informationen auf, da die Felder in beiden Registerkarten die gleichen Namen haben und nicht separat gespeichert, sondern verkettet und zusammen gespeichert werden. Zum Beispiel, wenn ich ein Textfeld habe und in tab1 schreibe ich "text1" und in tab2 schreibe ich "text2", wenn ich ein erneutes Öffnen speichern, wird der Wert in beiden Registerkarten "text1, text2" sein.
Bis jetzt habe ich nur Änderungen in der dialog.xml und der neuen Registerkarte xml vorgenommen. Habe ich etwas oder etwas in diesen oder anderen Dateien vergessen? Muss ich irgendwelche Bündel einschließen? könnte es eine allgemeine/server-einstellung sein oder ist es etwas, das nur auf der komponentenebene getan werden kann?
Dies ist keine OOTB-Funktion und erfordert, dass das ACS AEM Commons-Paket in der Instanz installiert wird. Können Sie bestätigen, ob es bereits installiert ist? – rakhi4110
10 @ rakhi4110 Sie haben Recht: ACS AEM Commons Paket ist nicht installiert, und deshalb funktioniert es nicht gut. Wenn Sie das als Antwort verwenden könnten (mit einem Link, wo Sie das Paket finden/installieren können, wenn möglich), werde ich es als gültige Antwort markieren –