Problème

Vous souhaitez remplir dynamiquement des champs de formulaire dans une boîte de dialogue dans CQ. Par exemple, vous souhaitez définir une zone de sélection en configurant un composant Select dans dialog.any comme suit :

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

Solution

Pour l'exemple ci-dessus, vous codez tout pour les options de sélection dans dialog.any. Vous pouvez toutefois définir et gérer ces options en tant que ressource externe et remplir la boîte de dialogue de manière dynamique.

Utilisez un type OwnerDraw dans dialog.any plutôt que de sélectionner un script qui trace un composant CFC par programmation. Dans le script, vous pouvez récupérer les valeurs d'une ressource externe et remplir la boîte de dialogue. Par conséquent, pour modifier l’exemple de sélection pour utiliser une classe OwnerDraw, procédez comme suit :

  1. Changez dialog.any pour appeler un script personnalisé pour dessiner le champ de formulaire via le type de propriétaire ... /Type "AtomLine" /Sub { /mySelectAtom { /Type "OwnerDraw" /file "/apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp" } } ...
  2. Définissez une classe Java pour accéder à une ressource externe et renvoyez java.util.Map avec toutes les options. 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. Définissez /apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp qui appelle la classe Java et effectue le rendu de l'objet CFC sélectionné avec les options renvoyées dans java.util.Map. Placez le code ci-dessous dans dynamicSelect.esp.

L'exemple utilise CFC.Controls.Select. Mais vous pouvez utiliser la même approche OwnerDraw avec d'autres objets CFC. En fait, vous pouvez utiliser OwnerDraw pour dessiner n'importe quelle section de la boîte de dialogue qui ne peut pas être définie en utilisant n'importe quelle notation.

Les objets de script CFC sont documentés sur http://docs.day.com, dans cfclib.pdf distribué avec Communiqué 4.x et via dans le système d'aide de votre instance.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne