Introduction

Vous pouvez remplir les champs d’un formulaire adaptatif à l’aide de données existantes. Lorsqu’un utilisateur ouvre un formulaire, les valeurs de ces champs sont préremplies. Vous pouvez obtenir ce résultat pour les formulaires adaptatifs avec ou sans modèle de formulaire ou schéma XML en tant que modèle de formulaire. Pour ce faire, les données utilisateur doivent être disponibles sous forme de fichier XML prérempli dans un format spécifique conforme aux formulaires adaptatifs.

Structure du fichier XML prérempli

Un formulaire adaptatif peut contenir un mélange de champs liés et non liés. Les champs liés sont ceux qui sont déplacés à partir de l’onglet Outil de recherche de contenu et qui contiennent une valeur de propriété bindRef non vide dans la boîte de dialogue de modification du champ. Les champs non liés sont déplacés directement à partir du sidekick et possède une valeur bindRef vide. 

Les formulaires adaptatifs prennent en charge le préremplissage des champs liés et non liés. Pour ce faire, le code XML de préremplissage peut contenir deux sections : afBoundedData et afUnBoundedData. La section afBoundedData contient les données de préremplissage pour les champs liés et les panneaux. Ces données doivent être conformes au schéma de modèle de formulaire associé. 

  • Pour les formulaires adaptatifs utilisant le modèle de formulaire XFA, le code XML de préremplissage doit être conforme au schéma de données du modèle XFA.
  • Pour les formulaires adaptatifs utilisant le schéma XML, le code XML de préremplissage doit être compatible avec la structure du schéma.
  • Pour les formulaires adaptatifs sans modèle de formulaire, il n’existe aucune donnée liée. Chaque champ est un champ non lié qui est prérempli à l’aide du code XML non lié.
Du code XML de préremplissage classique est illustré ci-dessous. Il permet de préremplir des champs liés et non liés.
<?xml version="1.0" encoding="UTF-8"?>
<afData>
  <afBoundData>
     <employeeData>
        .
     </employeeData>
  </afBoundData>

  <afUnboundData>
    <data>
      <textbox>Hello World</textbox>
         .
         .
      <numericbox>12</numericbox>
         . 
         .              
    </data>
  </afUnboundData>
</afData>

Examinons maintenant de plus près chaque type de formulaire adaptatif.

Formulaire adaptatif utilisant le modèle de formulaire XFA

  • Structure XML de préremplissage : le code XML de préremplissage du formulaire adaptatif basé sur XFA doit être conforme au schéma de données du modèle de formulaire XFA. Il peut être éventuellement encapsulé dans la balise /afData/afBoundData si vous souhaitez préremplir aussi des champs non liés.
  • Structure XML envoyée : si aucun code XML de préremplissage n’est utilisé, le code XML envoyé contient des données pour les champs liés et non liés dans la balise wrapper afData. Si du code XML de préremplissage est utilisé, le code XML envoyé possède la même structure que celui-ci. Si le code XML de préremplissage commence par la balise racine afData, le code XML de sortie possède également le même format. Si le code XML de préremplissage ne dispose pas du wrapper afData/afBoundData et commence plutôt directement par la balise racine du schéma telle que employeeData, le code XML envoyé commence également par la balise employeeData.

Telechargement

Formulaires adaptatifs basés sur un schéma XML 

  • Structure XML de préremplissage : le code XML de préremplissage doit être conforme au schéma XML associé. Il peut être éventuellement encapsulé dans la balise /afData/afBoundData si vous souhaitez préremplir aussi des champs non liés.
  • Structure XML envoyée : si aucun code XML de préremplissage n’est utilisé, le code XML envoyé contient des données pour les champs liés et non liés dans la balise wrapper afData. Si du code XML de préremplissage est utilisé, le code XML envoyé possède la même structure que celui-ci. Si le code XML de préremplissage commence par la balise racine afData, le code XML de sortie possède également le même format. Si le code XML de préremplissage ne dispose pas du wrapper afData/afBoundData et commence plutôt directement par la balise racine du schéma telle que employeeData, le code XML envoyé commence également par la balise employeeData.
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema targetNamespace="http://adobe.com/sample.xsd"
            xmlns="http://adobe.com/sample.xsd"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
    <xs:element name="sample" type="SampleType"/>
         
    <xs:complexType name="SampleType">
        <xs:sequence>
            <xs:element name="noOfProjectsAssigned" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

Pour les champs dont le modèle est le schéma XML, les données sont remplies dans la balise afBoundedData, comme illustré dans l’exemple de schéma ci-dessous. Elle peut servir à créer un formulaire adaptatif avec un ou plusieurs champs de texte non liés.

<?xml version="1.0" encoding="UTF-8"?><afData>
  <afUnboundData>
    <data>
      <textbox>Ignorance is bliss :) </textbox>
    </data>
  </afUnboundData>
  <afBoundData>
    <data>
      <noOfProjectsAssigned>twelve</noOfProjectsAssigned>
    </data>
  </afBoundData>
</afData>

Remarque :

il est recommandé de ne pas utiliser de champs non liés dans les panneaux liés (panneaux avec une valeur bindRef non vides qui ont été créés en faisant glisser des composants depuis le sidekick). Cela peut entraîner une perte des données de ces champs non liés. Il est également recommandé que les noms des champs soient uniques dans le formulaire, notamment pour les champs non liés.

 

<?xml version="1.0" encoding="UTF-8"?><config>
 <assignmentDetails descriptionOfAssignment="Some Science Project" durationOfAssignment="34" financeRelatedProject="1" name="Lisa" numberOfMentees="1"/>
 <assignmentDetails descriptionOfAssignment="Kidding, right?" durationOfAssignment="4" financeRelatedProject="1" name="House" numberOfMentees="3"/>
</config>

Formulaire adaptatif sans modèle de formulaire

Pour les formulaires adaptatifs sans modèle de formulaire, les données de tous les champs se trouveront sous la balise <data> dont le parent est <afUnboundData>.

Prenez également en compte les points suivants :

  1. Les balises XML des données utilisateur envoyées pour différents champs sont générées avec le nom des champs. Par conséquent, les noms des champs doivent être uniques.
  2. Les champs non liés sont écrits dans le dossier créé à l’envoi et dans le code XML de la propriété jcr:data de ce dossier.
<?xml version="1.0" encoding="UTF-8"?><afData>
  <afUnboundData>
    <data>
      <radiobutton>2</radiobutton>
      <repeatable_panel_no_form_model>
        <numericbox>12</numericbox>
      </repeatable_panel_no_form_model>
      <repeatable_panel_no_form_model>
        <numericbox>21</numericbox>
      </repeatable_panel_no_form_model>
      <checkbox>2</checkbox>
      <textbox>Nopes</textbox>
    </data>
  </afUnboundData>
  <afBoundData/>
</afData>

Configuration du service de préremplissage à l’aide de Configuration Manager

Pour activer le service de préremplissage, vous devez spécifier le service de configuration commun aux formulaires dans la configuration de la console Web d’AEM. Suivez les étapes suivantes pour configurer le service de préremplissage :

  1. Ouvrez la configuration de la console Web d’Adobe Experience Manager à l’aide de l’URL :
    http://<serveur>:<port>/system/console/configMgr

  2. Recherchez et ouvrez le service de configuration commun aux formulaires. 

  3. Entrez l’emplacement de données ou une expression regex (expression régulière) pour les emplacements de fichiers de données. Voici des exemples d’emplacements de fichier de données valides :

    • file:///C:/Users/public/Document/Prefill/.*
    • http://localhost:8000/somesamplexmlfile.xml

    Remarque : par défaut, le préremplissage est autorisé via les fichiers crx pour tous les types de formulaires adaptatifs (aucun, XSD et XDP). Le préremplissage est autorisé uniquement avec les fichiers XML.

     

    Exemple de configuration du service de configuration commun aux formulaires
  4. Le service de préremplissage est maintenant configuré pour votre formulaire.

    Remarque :

    Le protocole crx s’occupe de la sécurité des données préremplies et par conséquent, est activé par défaut. Le préremplissage par le biais d’autres protocoles à l’aide de l’expression regex peut entraîner une vulnérabilité.  Une URL très sécurisée doit être spécifiée dans la configuration pour protéger vos données.

Cas étrange des panneaux répétables

En règle générale, les champs liés (du modèle de formulaire ou du schéma XML) et non liés ou les sous-formulaires sont créés dans un même formulaire adaptatif. Les éléments suivants constituent quelques exceptions lorsque les sous-formulaires liés sont répétables :

  • Les panneaux répétables non liés ne sont pas pris en charge pour les formulaires adaptatifs utilisant le modèle de formulaire XFA ou XSD.
  • N’utilisez pas de champs non liés dans les panneaux répétables liés.

Remarque :

En règle générale, vous ne devez pas mélanger de champs liés et non liés s’ils sont recoupés dans les données remplies dans les champs non liés par l’utilisateur final. Si possible, vous devez modifier le schéma XML ou le modèle de formulaire XFA et ajouter une entrée pour les champs non liés pour qu’ils deviennent également liés et que ses données soient disponibles comme tout autre champ dans le code XML.

Protocoles pris en charge pour le préremplissage des données

Des formulaires adaptatifs peuvent être préremplis avec des données d’utilisateurs au format XML via les protocoles suivants s’ils ont été configurés avec une expression régulière valide :

Protocole crx://

http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=crx:///tmp/fd/af/myassets/sample.xml

Le nœud spécifié doit posséder une propriété nommée jcr:data et contenir les données XML.

Protocole file:// 

http://localhost:4502/content/forms/af/someAF.html?wcmmode=disabled&dataRef=file:///C:/Users/form-user/Downloads/somesamplexml.xml

Le fichier référencé doit se trouver sur le même serveur.

Protocole http://

http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=http://localhost:8000/somesamplexmlfile.xml

Remarque :

La transmission des paramètres d’authentification n’est pas prise en charge.

Définition de l’attribut data dans slingRequest

Vous pouvez également définir l’attribut data dans slingRequest, où l’attribut data correspond à une chaîne contenant des balises XML, comme illustré dans l’exemple de code ci-après.

<%
           String dataXML="<afData>" +
                            "<afUnboundData>" +
                                "<dataRoot>" +
                                    "<first_name>"+ "Tyler" + "</first_name>" +
                                    "<last_name>"+ "Durden " + "</last_name>" +
                                    "<gender>"+ "Male" + "</gender>" +
                                    "<location>"+ "Texas" + "</location>" +
                                    "</dataRoot>" +
                            "</afUnboundData>" +
                        "</afData>";
        slingRequest.setAttribute("data", dataXML);
%>

Vous pouvez écrire une chaîne XML simple contenant toutes les données et la définir dans slingRequest. Cette opération peut facilement être effectuée dans le JSP de rendu pour tout composant que vous souhaitez inclure dans la page où vous pouvez définir l’attribut data slingRequest.

Imaginons que vous souhaitez une conception spécifique pour votre page avec un type spécifique d’en-tête. Pour obtenir ce résultat, vous pouvez écrire votre propre fichier header.jsp à inclure dans votre composant de page et définir l’attributdata

Prenons un autre bon exemple dans lequel vous souhaitez préremplir les données à la connexion par le biais de comptes de réseau social tels que Facebook, Twitter ou LinkedIn. Dans ce cas, vous pouvez inclure un JSP simple dans header.jsp qui récupère les données du compte d’utilisateur et définit le paramètre data.

Telechargement

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