Popolare dinamicamente una finestra di dialogo

Problema

Si desidera popolare dinamicamente i campi del modulo in una finestra di dialogo in CQ. Ad esempio, se desideri definire una casella di selezione configurando un componente Seleziona in dialog.any come segue:

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

Soluzione

Per l'esempio di cui sopra, si codifica tutto per le opzioni di selezione in dialog.any. Tuttavia, puoi definire e gestire queste opzioni come risorsa esterna e popolare la finestra di dialogo in modo dinamico.

Utilizza un tipo OwnerDraw in dialog.any invece di Select per specificare uno script che disegna programmaticamente un componente CFC. Nello script, puoi recuperare i valori da una risorsa esterna e popolare la finestra di dialogo. Quindi, per modificare l'esempio Seleziona per utilizzare un OwnerDraw, procedi come segue.

  1. Change dialog.any to call a custom script to draw the form field via OwnerDraw type ... /Type "AtomLine" /Sub { /mySelectAtom { /Type "OwnerDraw" /file "/apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp" } } ... 
  2. Definisci una classe Java per accedere a una risorsa esterna e restituisci java.util.map con tutte le opzioni. 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. Definisci /apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp che chiama la classe Java e rende l'oggetto select CFC con le opzioni restituite in java.util.Map. Posiziona il codice a soffietto in dynamicSelect.esp.

L'esempio utilizza CFC.Controls.Select. Ma si può usare lo stesso approccio OwnerDraw con altri oggetti CFC. Infatti, puoi utilizzare OwnerDraw per disegnare qualsiasi sezione della finestra di dialogo che non può essere definita utilizzando una qualsiasi notazione.

Gli oggetti di scripting CFC sono documentati su http://docs.day.com, in cfclib.pdf distribuito con Communiqué 4.x e tramite il sistema di Help della vostra istanza.

Logo Adobe

Accedi al tuo account