Utilizza i dati esistenti per precompilare i campi di un modulo adattivo.
È possibile precompilare i campi di un modulo adattivo utilizzando i dati esistenti. Quando un utente apre un modulo, i valori relativi a tali campi vengono precompilati. Per precompilare i dati in un modulo adattivo, rendi disponibili i dati utente come XML / JSON di precompilazione nel formato che corrisponde alla precompilazione della struttura dati dei moduli adattivi.
Un modulo adattivo può contenere diversi campi associati o non associati. I campi associati sono campi trascinati dalla scheda Content Finder e contengono un valore di proprietà bindRef
non vuoto nella finestra di dialogo di modifica del campo. I campi non associati vengono trascinati direttamente dal browser componenti della barra laterale e hanno un valore bindRef
vuoto.
È possibile precompilare i campi associati e non associati di un modulo adattivo. I dati di precompilazione contengono le sezioni afBoundData e afUnBoundData per precompilare i campi associati e non associati di un modulo adattivo. La sezione afBoundData
contiene i dati di precompilazione per i campi e i pannelli associati. Questi dati devono essere conformi allo schema del modello di modulo associato:
<?xml version="1.0" encoding="UTF-8"?>
<afData>
<afBoundData>
<employeeData>
.
</employeeData>
</afBoundData>
<afUnboundData>
<data>
<textbox>Hello World</textbox>
.
.
<numericbox>12</numericbox>
.
.
</data>
</afUnboundData>
</afData>
{
"afBoundData": {
"employeeData": { }
},
"afUnboundData": {
"data": {
"textbox": "Hello World",
"numericbox": "12"
}
}
}
Per i campi associati con lo stesso binding o campi non associati con lo stesso nome, i dati specificati nel tag XML o nell’oggetto JSON vengono compilati in tutti i campi. Ad esempio, due campi di un modulo vengono mappati sul nome textbox
nei dati di precompilazione. Durante il runtime, se il primo campo casella di testo contiene "A", viene automaticamente inserito "A" nella seconda casella di testo. Questo collegamento è denominato collegamento in tempo reale dei campi del modulo adattivo.
La struttura dell’XML di precompilazione e dell’XML inviato per i moduli adattivi basati su XFA è la seguente:
Struttura XML di precompilazione: Il codice XML di precompilazione per il modulo adattivo basato su XFA deve essere conforme allo schema dati del modello di modulo XFA. Per precompilare i campi non associati, racchiudi la struttura XML di precompilazione nel tag /afData/afBoundData
.
Struttura XML inviata: Se non viene utilizzato alcun XML di precompilazione, l’XML inviato contiene i dati per i campi associati e non associati nel tag afData
wrapper. Se viene utilizzato un XML di precompilazione, l'XML inviato ha la stessa struttura dell'XML di precompilazione. Se l'XML di precompilazione inizia con il tag radice afData
, anche l'XML di output ha lo stesso formato. Se l'XML di precompilazione non ha afData/afBoundData
wrapper e inizia invece direttamente dal tag principale dello schema come employeeData
, anche l'XML inviato inizia con il tag employeeData
.
Prefill-Submit-Data-ContentPackage.zip
Get
FileSample contenente dati di precompilazione e dati inviati
La struttura dell’XML di precompilazione e dell’XML inviato per i moduli adattivi basati sullo schema XML è la seguente:
afData
wrapper. Se viene utilizzato il codice XML di precompilazione, il codice XML inviato ha la stessa struttura del codice XML di precompilazione. Se l'XML di precompilazione inizia con il tag radice afData
, l'XML di output ha lo stesso formato. Se l'XML di precompilazione non ha il wrapper afData/afBoundData
e inizia invece direttamente dal tag principale dello schema come employeeData
, anche l'XML inviato inizia con il tag employeeData
.<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="https://adobe.com/sample.xsd"
xmlns="https://adobe.com/sample.xsd"
xmlns:xs="https://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>
Per i campi il cui modello è lo schema XML, i dati vengono precompilati nel tag afBoundData
come mostrato nell’XML di esempio riportato di seguito. Può essere utilizzato per precompilare un modulo adattivo con uno o più campi di testo non associati.
<?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>
Si consiglia di non utilizzare campi non associati nei pannelli associati (pannelli con bindRef
non vuoto che è stato creato trascinando i componenti dalla barra laterale o dalla scheda Origini dati). Può causare la perdita di dati di questi campi non associati. Inoltre, è consigliabile che i nomi dei campi siano univoci all’interno del modulo, in particolare per i campi non associati.
<?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>
Per i moduli adattivi basati sullo schema JSON, la struttura di precompilare JSON e inviare JSON è descritta di seguito. Per ulteriori informazioni, consulta Creazione di moduli adattivi con schema JSON.
{
"id": "https://some.site.somewhere/entry-schema#",
"$schema": "https://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"address": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
}}}}}
Per i campi che utilizzano il modello di schema JSON, i dati vengono precompilati nell'oggetto afBoundData come mostrato nel JSON di esempio riportato di seguito. Può essere utilizzato per precompilare un modulo adattivo con uno o più campi di testo non associati. Di seguito è riportato un esempio di dati con wrapper afData/afBoundData
:
{
"afData": {
"afUnboundData": {
"data": { "textbox": "Ignorance is bliss :) " }
},
"afBoundData": {
"data": { {
"user": {
"address": {
"city": "Noida",
"country": "India"
}}}}}}}
Di seguito è riportato un esempio senza wrapper afData/afBoundData
:
{
"user": {
"address": {
"city": "Noida",
"country": "India"
}}}
L’utilizzo di campi non associati nei pannelli associati (pannelli con bindRef non vuoti creati trascinando componenti dalla barra laterale o dalla scheda Origini dati) è non consigliato in quanto potrebbe causare la perdita di dati dei campi non associati. È consigliabile assegnare nomi di campo univoci all’interno del modulo, in particolare per i campi non associati.
Per i moduli adattivi privi di modello di modulo, i dati di tutti i campi si trovano sotto il tag <data>
di <afUnboundData> tag
.
Inoltre, prendere nota dei seguenti elementi:
I tag XML per i dati utente inviati per vari campi vengono generati utilizzando il nome dei campi. Pertanto, i nomi dei campi devono essere univoci.
<?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>
Per abilitare il servizio di precompilazione, specifica la configurazione predefinita del servizio di precompilazione nella configurazione della console Web AEM. Per configurare il servizio di precompilazione, effettua le seguenti operazioni:
La configurazione del servizio di precompilazione è applicabile ai moduli adattivi, ai moduli HTML5 e ai set di moduli HTML5.
Apri Configurazione console Web Adobe Experience Manager utilizzando l'URL:
https://<server>:<port>/system/console/configMgr
Cerca e apri Configurazione predefinita servizio di precompilazione.
Immetti la posizione dei dati o un regex (espressione regolare) per le Posizioni dei file di dati. Esempi di percorsi di file di dati validi:
Per impostazione predefinita, la precompilazione è consentita tramite file crx per tutti i tipi di Forms adattivo (XSD, XDP, JSON, FDM e senza modello di modulo). La precompilazione è consentita solo con file JSON e XML.
Il servizio di precompilazione è ora configurato per il modulo.
Il protocollo crx si occupa della sicurezza dei dati precompilati e, quindi, è consentito per impostazione predefinita. Precompilazione tramite altri protocolli utilizzando regex generico potrebbe causare vulnerabilità. Nella configurazione , specifica una configurazione URL sicura per la protezione dei dati.
In genere, i campi associati (schema modulo) e non associati sono creati nello stesso modulo adattivo, ma le seguenti sono alcune eccezioni nel caso in cui il binding sia ripetibile:
Di regola, non combinare campi associati e non associati se sono intersecati in dati compilati dall’utente finale in campi non associati. Se possibile, è necessario modificare lo schema o il modello di modulo XFA e aggiungere una voce per i campi non associati, in modo che anch’esso diventi associato e i relativi dati siano disponibili come altri campi nei dati inviati.
I moduli adattivi possono essere precompilati con i dati utente in formato precompilato tramite i seguenti protocolli, se configurati con regex valido:
http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=crx:///tmp/fd/af/myassets/sample.xml
Il nodo specificato deve avere una proprietà denominata jcr:data
e contenere i dati.
http://localhost:4502/content/forms/af/someAF.html?wcmmode=disabled&dataRef=file:///C:/Users/form-user/Downloads/somesamplexml.xml
Il file di cui si fa riferimento deve trovarsi sullo stesso server.
http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=http://localhost:8000/somesamplexmlfile.xml
http://localhost:4502/content/forms/af/abc.html?wcmmode=disabled&dataRef=service://[SERVICE_NAME]/[IDENTIFIER]
Il passaggio dei parametri di autenticazione non è supportato.
Puoi anche impostare l'attributo data
in slingRequest
, dove l'attributo data
è una stringa contenente XML o JSON, come mostrato nel codice di esempio seguente (Esempio per XML):
<%
String dataXML="<afData>" +
"<afUnboundData>" +
"<data>" +
"<first_name>"+ "Tyler" + "</first_name>" +
"<last_name>"+ "Durden " + "</last_name>" +
"<gender>"+ "Male" + "</gender>" +
"<location>"+ "Texas" + "</location>" +
"</data>" +
"</afUnboundData>" +
"</afData>";
slingRequest.setAttribute("data", dataXML);
%>
È possibile scrivere una stringa XML o JSON semplice contenente tutti i dati e impostarla in slingRequest. Questo può essere facilmente fatto nel tuo modulo di rendering JSP per qualsiasi componente, che desideri includere nella pagina in cui puoi impostare l'attributo di dati slingRequest.
Ad esempio, dove vuoi creare una progettazione specifica per la pagina con un tipo specifico di intestazione. A questo scopo, è possibile scrivere il proprio header.jsp
, che può essere incluso nel componente della pagina e impostare l'attributo data
.
Un altro buon esempio è un caso d'uso in cui si desidera precompilare i dati di accesso attraverso account social come Facebook, Twitter o LinkedIn. In questo caso, puoi includere un semplice JSP in header.jsp
, che recupera i dati dall’account utente e imposta il parametro dei dati.
precompila pagina component.zip
Ottieni
FileSample prefill.jsp nel componente pagina
È possibile utilizzare il servizio di precompilazione personalizzato per gli scenari, in cui si leggono costantemente i dati da un’origine predefinita. Il servizio di precompilazione legge i dati da origini dati definite ed esegue la precompilazione dei campi del modulo adattivo con il contenuto del file di dati di precompilazione. Inoltre, consente di associare in modo permanente i dati precompilati a un modulo adattivo.
Il servizio di precompilazione è un servizio OSGi e viene fornito tramite il bundle OSGi. Puoi creare il bundle OSGi, caricarlo e installarlo nei bundle AEM Forms. Prima di iniziare a creare il bundle:
Posiziona il file di dati (dati di precompilazione) nell'archivio crx. Puoi posizionare il file in qualsiasi posizione nella cartella \content di crx-repository.
Il pacchetto ricorrenti (pacchetto del servizio di precompilazione di esempio) contiene un esempio di implementazione del servizio di precompilazione AEM Forms. Apri il pacchetto ricorrenti in un editor di codice. Ad esempio, apri il progetto ricorrenti in Eclipse per la modifica. Dopo aver aperto il pacchetto ricorrenti in un editor di codice, esegui i seguenti passaggi per creare il servizio.
Apri il file src\main\java\com\adobe\test\Prefill.java per la modifica.
Nel codice, imposta il valore di:
nodePath:
La variabile del percorso del nodo che punta alla posizione dell'archivio crx contiene il percorso del file di dati (prefill). Ad esempio, /content/prefilldata.xmllabel:
Il parametro label specifica il nome visualizzato del servizio. Ad esempio, Servizio di precompilazione predefinitoSalva e chiudi il file Prefill.java
.
Aggiungi il pacchetto AEM Forms Client SDK
al percorso di compilazione del progetto ricorrenti.
Compila il progetto e crea il .jar per il bundle.
Per avviare il servizio di precompilazione, carica il file JAR nella console Web AEM Forms e attiva il servizio. Ora, il servizio inizia a comparire nell’editor di moduli adattivi. Per associare un servizio di precompilazione a un modulo adattivo: