Dynamisches Befüllen eines Dialogfelds

Problem

Sie wollen Formularfelder in einem Dialogfeld in CQ dynamisch befüllen. Zum Beispiel wollen Sie ein Auswahlfeld definieren, indem Sie eine Auswahlkomponente in dialog.any wie folgt konfigurieren:

... /Type "AtomLine" /Sub { /mySelectAtom { /Type "Select" /Option { /option0 { /value "red" /text "Scarlet" } /option1 { /value "green" /text "Lime" } /option2 { /value "blue" /text "Azure" } } } } ... 

Lösung

Für das oben genannte Beispiel hartkodieren Sie alles für die gewählten Optionen in dialog.any. Sie können diese Optionen jedoch als externe Ressource definieren und verwalten und das Dialogfeld dynamisch befüllen.

Einen OwnerDraw-Typ in dialog.any anstelle von Select verwenden, um ein Skript zu spezifizieren, das eine CFC-Komponente programmatisch zeichnet. Im Skript können Sie die Werte von einer externen Ressource abrufen und das Dialogfeld befüllen. Um das Select-Beispiel für die Verwendung eines OwnerDraw abzuändern,befolgen Sie die folgenden Schritte:

  1. dialog.any verändern, sodass es ein benutzerdefiniertes Skript aufruft, um das Formularfeld via OwnerDraw-Typ zu zeichnen ... /Type "AtomLine" /Sub { /mySelectAtom { /Type "OwnerDraw" /file "/apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp" } } ... 
  2. Definieren Sie eine Java-Klasse, um auf eine externe Ressource zuzugreifen und java.util.Map mit allen Optionen zurückzuerhalten. public class DialogValues { public static Map getSelectOptions(String atomName) { Map optionsMap = new LinkedHashMap(); // get select options and put them in a map // ... return optionsMap; } }
  3. /apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp definieren, das die Java-Klasse aufruft und das CFC-ausgewählte Objekt mit Optionen zurück in java.util.Map rendert. Den untenstehenden Code in dynamicSelect.esp einfügen.

Im Beispiel wird CFC.Controls.Select verwendet. Sie können jedoch den gleichen OwnerDraw-Ansatz mit anderen CFC-Objekten verwenden. Sie können OwnerDraw verwenden, um einen beliebigen Abschnitt des Dialogfelds zu zeichnen, der nicht mit der .any-Anmerkung definiert werden kann.

Die CFC-Skripterstellungsobjekte werden auf http://docs.day.com dokumentiert und in cfclib.pdf mit Communiqué 4.x im Hilfesystem Ihrer Instanz verteilt.

Adobe-Logo

Bei Ihrem Konto anmelden