Einführung

Sie können die Felder eines adaptiven Formulars mit vorhandenen Daten im Voraus füllen. Wenn ein Benutzer ein Formular öffnet, werden die Werte für diese Felder bereits eingegeben. Sie können dies bei adaptiven Formularen mit oder ohne Formularvorlage oder XML-Schema als Formularmodell erreichen. Um dies zu erreichen, sollten die Benutzerdaten in der XML zum Vorausfüllen in einem bestimmten, für adaptive Formulare geeigneten Format verfügbar sein.

Die XML-Struktur zum Vorausfüllen

Ein adaptives Formular kann eine Mischung aus gebundenen und ungebundenen Feldern enthalten. Gebundene Felder sind diejenigen, die aus der Registerkarte für die Inhaltssuche gezogen werden und einen nicht leeren Wert der bindRef-Eigenschaft im Feldbearbeitungsdialogfeld enthalten. Ungebundene Felder werden direkt aus dem Sidekick gezogen und haben einen leeren bindRef-Wert. 

Adaptive Formulare unterstützen das Vorausfüllen von gebundenen und ungebundenen Feldern. Um dies zu erreichen, kann die XML zum Vorausfüllen zwei Abschnitte enthalten: afBoundedData und afUnBoundedData. Der Abschnitt afBoundedData enthält die Daten zum Vorausfüllen für gebundene Felder und Bereiche. Diese Daten müssen mit dem verknüpften Formularmodellschema konform sein. 

  • Bei adaptiven Formularen mit der XFA-Formularvorlage muss die XML zum Vorausfüllen mit dem Datenschema der XFA-Vorlage konform sein.
  • Bei adaptiven Formularen mit dem XML-Schema muss die XML zum Vorausfüllen mit der Schemastruktur konform sein.
  • Bei adaptiven Formularen ohne Formularmodell gibt es keine gebundenen Daten. Jedes Feld ist ein ungebundenes Feld und wird anhand der ungebundenen XML vorausgefüllt.
Weiter unten wird eine typische XML zum Vorausfüllen angezeigt, mit der sowohl gebundene als auch ungebundene Felder im Voraus gefüllt werden.
<?xml version="1.0" encoding="UTF-8"?>
<afData>
  <afBoundData>
     <employeeData>
        .
     </employeeData>
  </afBoundData>

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

Als Nächstes werden die einzelnen Typen von adaptiven Formularen genauer vorgestellt.

Adaptives Formular mit XFA-Formularvorlage

  • XML-Struktur zum Vorausfüllen: Die XML zum Vorausfüllen für XFA-basierte adaptive Formulare muss mit dem Datenschema der XFA-Formularvorlage konform sein. Optional kann sie in ein /afData/afBoundData-Tag eingeschlossen werden, wenn Sie auch ungebundene Felder im Voraus ausfüllen möchten.
  • Gesendete XML-Struktur: Wenn keine XML zum Vorausfüllen verwendet wird, enthält die gesendete XML Daten für gebundene und ungebundene Felder im afData-Wrapper-Tag. Wenn XML zum Vorausfüllen verwendet wird, enthält die gesendete XML dieselbe Struktur wie die XML zum Vorausfüllen. Wenn die XML zum Vorausfüllen mit dem afData-Stamm-Tag beginnt, hat die Ausgabe-XML ebenfalls dasselbe Format. Wenn die XML zum Vorausfüllen nicht den afData/afBoundData-Wrapper aufweist und stattdessen direkt aus dem Schemastamm-Tag beginnt, wie employeeData, beginnt die gesendete XML ebenfalls mit dem employeeData-Tag.

Herunterladen

XML-Schemabasierte adaptive Formulare 

  • XML-Struktur zum Vorausfüllen: Die XML zum Vorausfüllen muss mit dem verknüpften XML-Schema konform sein. Optional kann sie in das /afData/afBoundData-Tag eingeschlossen werden, wenn Sie auch ungebundene Felder im Voraus ausfüllen möchten.
  • Gesendete XML-Struktur: Wenn keine XML zum Vorausfüllen verwendet wird, enthält die gesendete XML Daten für gebundene und ungebundene Felder im afData-Wrapper-Tag. Wenn die XML zum Vorausfüllen verwendet wird, enthält die gesendete XML dieselbe Struktur wie die XML zum Vorausfüllen. Wenn die XML zum Vorausfüllen mit dem afData-Stamm-Tag beginnt, hat die Ausgabe-XML dasselbe Format. Wenn die XML zum Vorausfüllen nicht den afData/afBoundData-Wrapper aufweist und stattdessen direkt aus dem Schemastamm-Tag beginnt, wie employeeData, beginnt die gesendete XML ebenfalls mit dem employeeData-Tag.
<?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>

Bei Feldern, deren Modell das XML-Schema ist, werden die Daten im afBoundedData-Tag wie im Beispielschema unten dargestellt gefüllt. Es kann zum Authoring eines adaptiven Formulars mit einem oder mehreren ungebundenen Textfeldern verwendet werden.

<?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>

Hinweis:

Es wird empfohlen, keine ungebundenen Felder in gebundenen Bereichen zu verwenden (Bereiche mit nicht leerem bindRef-Wert, der durch Ziehen von Komponenten aus dem Sidekick erstellt wurde). Dies kann zu Datenverlust bei diesen ungebundenen Feldern führen. Darüber hinaus wird empfohlen, dass die Namen der Felder im Formular eindeutig sind, besonders bei ungebundenen Feldern.

 

<?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>

Adaptives Formular ohne Formularmodell

Bei adaptiven Formularen ohne Formularmodell befinden sich die Daten für alle Felder unter dem <data>-Tag, dessen übergeordnetes Element <afUnboundData> ist.

Außerdem sollten Sie Folgendes beachten:

  1. Die XML-Tags für die Benutzerdaten, die für verschiedene Felder gesendet werden, werden mit dem Namen der Felder generiert. Daher müssen die Feldnamen eindeutig sein.
  2. Ungebundene Felder werden in den Ordner geschrieben, der beim Senden erstellt wird, und in die XML in der jcr:data-Eigenschaft dieses Ordners.
<?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>

Konfigurieren des Vorbefüllungs-Diensts mithilfe von Configuration Manager

Um den Vorbefüllungs-Dienst zu aktivieren, müssen Sie die allgemeinen Forms Configuration-Dienst in the AEM Web Console Configuration. Führen Sie die folgenden Schritte aus, um den Vorbefüllungs-Dienst zu konfigurieren:

  1. Öffnen Sie die Adobe Experience Manager Web Console Configuration über die URL
    http://<server>:<port>/system/console/configMgr

  2. Suchen und öffnen Sie den Forms Common Configuration-Dienst

  3. Geben Sie den Datenspeicherort oder ein regex (regulärer Ausdruck) für die Datendateispeicherorte ein. Beispiele für gültige Datendateispeicherorte:

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

    Hinweis: Standardmäßig ist Vorbefüllen von crx-Dateien für alle Arten von adaptiven Formularen (ohne, XSD und XDP) zulässig. Vorbefüllen ist nur mit XML-Dateien zulässig.

     

    Beispiel für Konfiguration von Forms Common Configuration Service
  4. Der Vorbefüllungs-Dienst ist jetzt für Ihr Formular konfiguriert.

    Hinweis:

    Das crx-Protokoll verwaltet die vorbefüllte Datensicherheit und daher ist es standardmäßig zulässig. Vorbefüllen über andere Protokolle mit dem generischen regex verursacht möglicherweise Sicherheitslücken.Eine sehr sichere URL muss in der Konfiguration für den Schutz Ihrer Daten angegeben werden.

Die Besonderheit bei wiederholbaren Bereichen

Im Allgemeinen werden gebundene (aus der Formularvorlage oder dem XML-Schema) und ungebundene Felder oder Teilformulare in demselben adaptiven Formular erstellt. Im Folgenden werden allerdings einige Ausnahmen genannt, die gelten, falls die gebundenen Teilformulare wiederholbar sind:

  • Ungebundene wiederholbare Bereiche werden bei adaptiven Formularen mit der XFA-Formularvorlage oder XSD nicht unterstützt.
  • Verwenden Sie keine ungebundenen Felder in gebundenen wiederholbaren Bereichen.

Hinweis:

Generell sollten Sie keine gebundenen und ungebundenen Felder mischen, wenn sie sich in Daten schneiden, die vom Benutzer in ungebundenen Feldern eingegeben werden. Wenn möglich, sollten Sie das XML-Schema oder die XFA-Formularvorlage ändern und einen Eintrag für ungebundene Felder hinzufügen, sodass sie auch gebunden werden und ihre Daten wie andere Felder in der XML verfügbar sind.

Unterstützte Protokolle zum Vorausfüllen von Benutzerdaten

Adaptive Formulare können mithilfe der Benutzerdaten im XML-Format über die folgenden Protokolle vorausgefüllt werden:

crx://-Protokoll

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

Der angegebene Knoten muss die Eigenschaft jcr:data aufweisen und die XML-Daten enthalten.

file://-Protokoll 

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

Die referenzierte Datei muss sich auf demselben Server befinden.

http://-Protokoll

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

Hinweis:

Die Übergabe von Authentifizierungsparametern wird nicht unterstützt.

Festlegen des Datenattributs in slingRequest

Sie können auch das data-Attribut in slingRequest festlegen, wo das data-Attribut eine Zeichenfolge mit XML-Tags ist, wie im folgenden Beispielcode dargestellt.

<%
           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);
%>

Sie können eine einfache XML-Zeichenfolge schreiben, die alle Ihre Daten enthält, und diese in slingRequest festlegen. Sie können dies einfach in der Renderer-JSP für jede Komponente durchführen, die Sie auf der Seite aufnehmen möchten, auf der Sie das slingRequest data-Attribut festlegen können.

Beispiel: Sie wünschen ein spezifisches Design für Ihre Seite mit einem bestimmten Kopfzeilentyp. Um dies zu erreichen, können Sie eine eigene header.jsp schreiben, die Sie in Ihre Seitenkomponente aufnehmen, und das data-Attribut festlegen. 

Ein weiteres gutes Beispiel ist ein Szenario, bei dem Sie Daten bei der Anmeldung über Konten sozialer Netzwerke, wie Facebook, Twitter oder LinkedIn, vorausfüllen möchten. In diesem Fall können Sie eine einfache JSP in header.jsp aufnehmen, die Daten aus dem Benutzerkonto abruft und den data-Parameter festlegt.

Herunterladen

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie