Rellenar un cuadro de diálogo de forma dinámica

Problema

Desea rellenar los campos de formularios en un cuadro de diálogo de forma dinámica en CQ. Por ejemplo, desea definir un cuadro de selección configurando un componente Select en dialog.any, como se indica a continuación:

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

Solución

Para el ejemplo anterior, incruste todo en el código para las opciones de selección en dialog.any. Sin embargo, puede definir y administrar estas opciones como un recurso externo y rellenar el cuadro de diálogo de forma dinámica.

En lugar de Select, utilice un tipo OwnerDraw para especificar un script que elabore un componente CFC mediante programación. En el script, puede recuperar los valores de un recurso externo y rellenar el diálogo. Por lo tanto, para cambiar el ejemplo de Select para usar un OwnerDraw, haga lo siguiente.

  1. Cambie dialog.any para llamar a un script personalizado y elaborar el campo del formulario mediante el tipo OwnerDraw ... /Type "AtomLine" /Sub { /mySelectAtom { /Type "OwnerDraw" /file "/apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp" } } ...
  2. Defina una clase Java para acceder a un recurso externo y devuelva java.util.map con todas las opciones. 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. Defina /apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp, que llama a la clase Java y muestra el objeto de selección de CFC con opciones devueltas en java.util.Map. Ponga el siguiente código en dynamicSelect.esp.

El ejemplo utiliza CFC.Controls.Select. No obstante, puede utilizar el mismo método OwnerDraw con otros objetos CFC. De hecho, puede usar OwnerDraw para extraer cualquier sección del cuadro de diálogo que no pueda ser definida usando la anotación .any.

Los objetos de script de CFC se documentan en http://docs.day.com, en cfclib.pdf, distribuido con Communiqué 4.x y a través del sistema de ayuda de su instancia.

Logotipo de Adobe

Inicia sesión en tu cuenta