Gestione di Forms inviati handling-submitted-forms
Per le applicazioni basate sul Web che consentono all’utente di compilare moduli interattivi è necessario che i dati vengano inviati nuovamente al server. Utilizzando il servizio Forms, è possibile recuperare i dati immessi dall’utente in un modulo interattivo. Dopo aver recuperato i dati, puoi elaborarli per soddisfare le tue esigenze aziendali. Ad esempio, è possibile memorizzare i dati in un database, inviare i dati a un’altra applicazione, inviare i dati a un altro servizio, unire i dati in una struttura del modulo, visualizzare i dati in un browser Web e così via.
I dati modulo vengono inviati al servizio Forms come dati XML o PDF, opzione impostata in Designer. Un modulo inviato come XML consente di estrarre singoli valori di dati di campo. In altre parole, è possibile estrarre il valore di ciascun campo modulo immesso dall’utente. Un modulo inviato come dati di PDF è costituito da dati binari, non da dati XML. È possibile salvare il modulo come file PDF o inviarlo a un altro servizio. Se si desidera estrarre dati da un modulo inviato come XML e quindi utilizzare i dati del modulo per creare un documento PDF, avviare un'altra operazione AEM Forms. (Vedi Creazione di documenti PDF con dati XML inviati)
Il diagramma seguente mostra i dati inviati a un servlet Java denominato HandleData
da un modulo interattivo visualizzato in un browser web.
Nella tabella seguente sono descritti i passaggi del diagramma.
HandleData
Java Servlet come dati XML.HandleData
Java Servlet contiene la logica dell'applicazione per recuperare i dati.Gestione dei dati XML inviati handling-submitted-xml-data
Quando i dati del modulo vengono inviati come XML, è possibile recuperare i dati XML che rappresentano i dati inviati. Tutti i campi modulo vengono visualizzati come nodi in uno schema XML. I valori dei nodi corrispondono ai valori inseriti dall'utente. Si consideri un modulo di prestito in cui ogni campo del modulo viene visualizzato come un nodo all’interno dei dati XML. Il valore di ogni nodo corrisponde al valore che un utente compila. Supponiamo che un utente compili il modulo di prestito con i dati mostrati nel seguente modulo.
L’illustrazione seguente mostra i dati XML corrispondenti recuperati utilizzando l’API client del servizio Forms.
I campi nel modulo di prestito. Questi valori possono essere recuperati utilizzando le classi Java XML.
Gestione dei dati PDF inviati handling-submitted-pdf-data
Considera un'applicazione web che richiama il servizio Forms. Dopo che il servizio Forms esegue il rendering di un modulo PDF interattivo in un browser Web client, l’utente compila il modulo e lo invia nuovamente come dati di PDF. Quando il servizio Forms riceve i dati di PDF, può inviare i dati di PDF a un altro servizio o salvarli come file PDF. Il diagramma seguente mostra il flusso logico dell’applicazione.
La tabella seguente descrive i passaggi descritti in questo diagramma.
Gestione dei dati dell’URL UTF-16 inviati handling-submitted-url-utf-16-data
Se i dati del modulo vengono inviati come dati URL UTF-16, il computer client richiede Adobe Reader o Acrobat 8.1 o versione successiva. Anche se la struttura del modulo contiene un pulsante di invio con dati codificati tramite URL (HTTP Post) e l’opzione di codifica dei dati è UTF-16, la struttura del modulo deve essere modificata in un editor di testo come Blocco note. Puoi impostare l’opzione di codifica su UTF-16LE
o UTF-16BE
per il pulsante di invio. Designer non fornisce questa funzionalità.
Riepilogo dei passaggi summary-of-steps
Per gestire i moduli inviati, eseguire le operazioni seguenti:
- Includi file di progetto.
- Creare un oggetto API client Forms.
- Recupera i dati del modulo.
- Determinare se l’invio del modulo contiene allegati di file.
- Elabora i dati inviati.
Includi file di progetto
Includi i file necessari nel progetto di sviluppo. Se stai creando un'applicazione client utilizzando Java, includi i file JAR necessari. Se utilizzi i servizi web, assicurati di includere i file proxy.
Creare un oggetto API client Forms
Prima di poter eseguire programmaticamente un’operazione API client del servizio Forms, è necessario creare un client di servizio Forms. Se utilizzi l’API Java, crea un FormsServiceClient
oggetto. Se utilizzi l’API del servizio Web Forms, crea un FormsService
oggetto.
Recupera dati modulo
Per recuperare i dati del modulo inviati, è necessario invocare il FormsServiceClient
dell’oggetto processFormSubmission
metodo . Quando si richiama questo metodo, è necessario specificare il tipo di contenuto del modulo inviato. Quando i dati vengono inviati da un browser Web client al servizio Forms, possono essere inviati come dati XML o PDF. Per recuperare i dati immessi nei campi modulo, è possibile inviare i dati come dati XML.
È inoltre possibile recuperare i campi modulo da un modulo inviato come dati di PDF impostando le seguenti opzioni di esecuzione:
- Passa il seguente valore al
processFormSubmission
come parametro del tipo di contenuto:CONTENT_TYPE=application/pdf
. - Imposta la
RenderOptionsSpec
dell’oggettoPDFToXDP
valore atrue
- Imposta la
RenderOptionsSpec
dell’oggettoExportDataFormat
valore aXMLData
È possibile specificare il tipo di contenuto del modulo inviato quando si richiama il processFormSubmission
metodo . Nell'elenco seguente sono specificati i valori del tipo di contenuto applicabili:
- text/xml: Rappresenta il tipo di contenuto da utilizzare quando un modulo PDF invia dati del modulo come XML.
- application/x-www-form-urlencoded: Rappresenta il tipo di contenuto da utilizzare quando un modulo HTML invia dati come XML.
- application/pdf: Rappresenta il tipo di contenuto da utilizzare quando un modulo PDF invia dati come PDF.
application/pdf
. Il rapido avvio di Gestione dei PDF forms inviati come XML tramite l’API Java illustra come gestire i dati XML inviati da un modulo PDF. Il tipo di contenuto specificato in questo avvio rapido è text/xml
. Analogamente, la gestione dei moduli HTML inviati come XML tramite l’avvio rapido dell’API Java illustra come gestire i dati XML inviati da un modulo HTML. Il tipo di contenuto specificato in questo avvio rapido è application/x-www-form-urlencoded .È possibile recuperare i dati del modulo inviati al servizio Forms e determinarne lo stato di elaborazione. In altre parole, quando i dati vengono inviati al servizio Forms, non significa necessariamente che il servizio Forms abbia terminato l’elaborazione dei dati e che i dati siano pronti per essere elaborati. Ad esempio, i dati possono essere inviati al servizio Forms in modo da poter eseguire un calcolo. Una volta completato il calcolo, viene eseguito il rendering del modulo all’utente con i risultati del calcolo visualizzati. Prima di elaborare i dati inviati, è consigliabile determinare se il servizio Forms ha terminato l’elaborazione dei dati.
Il servizio Forms restituisce i seguenti valori per indicare se l’elaborazione dei dati è terminata:
- 0 (Invia): I dati inviati sono pronti per essere elaborati.
- 1 (Calcola): Il servizio Forms ha eseguito un’operazione di calcolo sui dati e i risultati devono essere resi nuovamente all’utente.
- 2 (Convalida): I dati del modulo convalidati dal servizio Forms e i risultati devono essere resi all’utente.
- 3 (successivo): La pagina corrente è cambiata con risultati che devono essere scritti nell’applicazione client.
- 4 (Precedente): La pagina corrente è cambiata con risultati che devono essere scritti nell’applicazione client.
Determinare se l’invio del modulo contiene allegati di file
Forms inviato al servizio Forms può contenere allegati di file. Ad esempio, utilizzando il riquadro allegato integrato di Acrobat, un utente può selezionare file allegati da inviare insieme al modulo. Inoltre, un utente può selezionare file allegati utilizzando una barra degli strumenti di HTML di cui è eseguito il rendering con un file HTML.
Dopo aver determinato se un modulo contiene allegati ai file, è possibile elaborare i dati. Ad esempio, è possibile salvare l'allegato al file system locale.
Elaborazione dei dati inviati
A seconda del tipo di contenuto dei dati inviati, è possibile estrarre singoli valori di campo modulo dai dati XML inviati o salvare i dati di PDF inviati come file PDF (o inviarli a un altro servizio). Per estrarre singoli campi del modulo, convertire i dati XML inviati in un’origine dati XML e quindi recuperare i valori dell’origine dati XML utilizzando org.w3c.dom
classi.
Consulta anche
Inclusione dei file libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Avvio rapido API di Forms Service
Trasmissione di documenti al servizio Forms
Creazione di applicazioni Web per il rendering di Forms
Gestire i moduli inviati tramite l’API Java handle-submitted-forms-using-the-java-api
Gestire un modulo inviato utilizzando l’API Forms (Java):
-
Includi file di progetto
Includi file JAR client, come adobe-forms-client.jar, nel percorso di classe del progetto Java.
-
Creare un oggetto API client Forms
- Crea un
ServiceClientFactory
oggetto contenente le proprietà di connessione. - Crea un
FormsServiceClient
utilizzando il relativo costruttore e passandoServiceClientFactory
oggetto.
- Crea un
-
Recupera dati modulo
- Per recuperare i dati del modulo inviati a un servlet Java, crea un
com.adobe.idp.Document
utilizzando il relativo costruttore e richiamando iljavax.servlet.http.HttpServletResponse
dell’oggettogetInputStream
dall'interno del costruttore. - Crea un
RenderOptionsSpec
utilizzando il relativo costruttore. Imposta il valore delle impostazioni internazionali richiamando ilRenderOptionsSpec
dell’oggettosetLocale
e passare un valore stringa che specifica il valore delle impostazioni internazionali.
note note NOTE È possibile istruire il servizio Forms per creare dati XDP o XML dal contenuto PDF inviato richiamando il RenderOptionsSpec
dell’oggettosetPDF2XDP
metodo e passaggiotrue
e anche chiamandosetXMLData
e di passaggiotrue
. Puoi quindi richiamare laFormsResult
dell’oggettogetOutputXML
per recuperare i dati XML corrispondenti ai dati XDP/XML. (2)FormsResult
viene restituito dall'oggettoprocessFormSubmission
, illustrato nel passaggio successivo.)-
Richiama il
FormsServiceClient
dell’oggettoprocessFormSubmission
e passare i seguenti valori:- La
com.adobe.idp.Document
oggetto contenente i dati del modulo. - Valore stringa che specifica le variabili di ambiente, comprese tutte le intestazioni HTTP rilevanti. Specifica il tipo di contenuto da gestire. Per gestire i dati XML, specificare il seguente valore di stringa per questo parametro:
CONTENT_TYPE=text/xml
. Per gestire i dati di PDF, specificare il seguente valore stringa per questo parametro:CONTENT_TYPE=application/pdf
. - Un valore stringa che specifica la variabile
HTTP_USER_AGENT
valore di intestazione, ad esempio .Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. Questo valore del parametro è facoltativo. - A
RenderOptionsSpec
oggetto che memorizza le opzioni di esecuzione.
La
processFormSubmission
restituisce unFormsResult
oggetto contenente i risultati dell'invio del modulo. - La
-
Determinare se il servizio Forms ha completato l’elaborazione dei dati del modulo richiamando il
FormsResult
dell’oggettogetAction
metodo . Se questo metodo restituisce il valore0
, i dati sono pronti per essere elaborati.
- Per recuperare i dati del modulo inviati a un servlet Java, crea un
-
Determinare se l’invio del modulo contiene allegati di file
- Richiama il
FormsResult
dell’oggettogetAttachments
metodo . Questo metodo restituisce unjava.util.List
oggetto contenente file inviati con il modulo. - Itera attraverso il
java.util.List
oggetto per determinare se sono presenti allegati di file. Se sono presenti allegati di file, ogni elemento è uncom.adobe.idp.Document
istanza. È possibile salvare gli allegati del file richiamando ilcom.adobe.idp.Document
dell’oggettocopyToFile
e passare unjava.io.File
oggetto.
note note NOTE Questo passaggio è applicabile solo se il modulo viene inviato come PDF. - Richiama il
-
Elaborazione dei dati inviati
-
Se il tipo di contenuto dati è
application/vnd.adobe.xdp+xml
otext/xml
, crea una logica di applicazione per recuperare i valori dei dati XML.- Crea un
com.adobe.idp.Document
richiamando l'oggettoFormsResult
dell’oggettogetOutputContent
metodo . - Crea un
java.io.InputStream
richiamando l'oggettojava.io.DataInputStream
costruttore e passaggiocom.adobe.idp.Document
oggetto. - Crea un
org.w3c.dom.DocumentBuilderFactory
chiamando l'oggetto staticoorg.w3c.dom.DocumentBuilderFactory
dell’oggettonewInstance
metodo . - Crea un
org.w3c.dom.DocumentBuilder
richiamando l'oggettoorg.w3c.dom.DocumentBuilderFactory
dell’oggettonewDocumentBuilder
metodo . - Crea un
org.w3c.dom.Document
richiamando l'oggettoorg.w3c.dom.DocumentBuilder
dell’oggettoparse
e passarejava.io.InputStream
oggetto. - Recupera il valore di ogni nodo all'interno del documento XML. Un modo per eseguire questa attività consiste nel creare un metodo personalizzato che accetta due parametri: la
org.w3c.dom.Document
e il nome del nodo di cui si desidera recuperare il valore. Questo metodo restituisce un valore stringa che rappresenta il valore del nodo. Nell'esempio di codice che segue questo processo, questo metodo personalizzato viene chiamatogetNodeText
. Viene mostrato il corpo di questo metodo.
- Crea un
-
Se il tipo di contenuto dati è
application/pdf
, crea una logica di applicazione per salvare i dati PDF inviati come file PDF.- Crea un
com.adobe.idp.Document
richiamando l'oggettoFormsResult
dell’oggettogetOutputContent
metodo . - Crea un
java.io.File
utilizzando il relativo costruttore pubblico. Assicurati di specificare PDF come estensione del nome file. - Compilare il file PDF richiamando il
com.adobe.idp.Document
dell’oggettocopyToFile
e passarejava.io.File
oggetto.
- Crea un
-
Consulta anche
Avvio rapido (modalità SOAP): Gestione dei PDF forms inviati come XML tramite l’API Java
Avvio rapido (modalità SOAP): Gestione dei moduli HTML inviati come XML tramite l’API Java
Avvio rapido (modalità SOAP): Gestione dei PDF forms inviati come PDF tramite l’API Java
Inclusione dei file libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Gestire i dati PDF inviati utilizzando l’API del servizio Web handle-submitted-pdf-data-using-the-web-service-api
Gestire un modulo inviato utilizzando l’API Forms (servizio Web):
-
Includi file di progetto
- Creare classi proxy Java che utilizzano il servizio WSDL di Forms.
- Includi le classi proxy Java nel percorso della classe.
-
Creare un oggetto API client Forms
Crea un
FormsService
e impostare i valori di autenticazione. -
Recupera dati modulo
-
Per recuperare i dati del modulo inviati a un servlet Java, crea un
BLOB
utilizzando il relativo costruttore. -
Crea un
java.io.InputStream
richiamando l'oggettojavax.servlet.http.HttpServletResponse
dell’oggettogetInputStream
metodo . -
Crea un
java.io.ByteArrayOutputStream
utilizzando il relativo costruttore e passando la lunghezza deljava.io.InputStream
oggetto. -
Copia il contenuto del
java.io.InputStream
nell'oggettojava.io.ByteArrayOutputStream
oggetto. -
Crea un array di byte richiamando il
java.io.ByteArrayOutputStream
dell’oggettotoByteArray
metodo . -
Popolare
BLOB
richiamandone l'oggettosetBinaryData
e passare l'array di byte come argomento. -
Crea un
RenderOptionsSpec
utilizzando il relativo costruttore. Imposta il valore delle impostazioni internazionali richiamando ilRenderOptionsSpec
dell’oggettosetLocale
e passare un valore stringa che specifica il valore delle impostazioni internazionali. -
Richiama il
FormsService
dell’oggettoprocessFormSubmission
e passare i seguenti valori:- La
BLOB
oggetto contenente i dati del modulo. - Valore stringa che specifica le variabili di ambiente, comprese tutte le intestazioni HTTP rilevanti. Specifica il tipo di contenuto da gestire. Per gestire i dati XML, specificare il seguente valore di stringa per questo parametro:
CONTENT_TYPE=text/xml
. Per gestire i dati di PDF, specificare il seguente valore stringa per questo parametro:CONTENT_TYPE=application/pdf
. - Un valore stringa che specifica la variabile
HTTP_USER_AGENT
valore di intestazione; ad esempio,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - A
RenderOptionsSpec
oggetto che memorizza le opzioni di esecuzione. - Un vuoto
BLOBHolder
oggetto popolato dal metodo . - Un vuoto
javax.xml.rpc.holders.StringHolder
oggetto popolato dal metodo . - Un vuoto
BLOBHolder
oggetto popolato dal metodo . - Un vuoto
BLOBHolder
oggetto popolato dal metodo . - Un vuoto
javax.xml.rpc.holders.ShortHolder
oggetto popolato dal metodo . - Un vuoto
MyArrayOf_xsd_anyTypeHolder
oggetto popolato dal metodo . Questo parametro viene utilizzato per memorizzare gli allegati dei file inviati insieme al modulo. - Un vuoto
FormsResultHolder
oggetto compilato dal metodo con il modulo inviato.
La
processFormSubmission
popola ilFormsResultHolder
con i risultati dell’invio del modulo. - La
-
Determinare se il servizio Forms ha completato l’elaborazione dei dati del modulo richiamando il
FormsResult
dell’oggettogetAction
metodo . Se questo metodo restituisce il valore0
, i dati del modulo sono pronti per essere elaborati. Puoi ottenere unFormsResult
ottenendo il valore delFormsResultHolder
dell’oggettovalue
membro dati.
-
-
Determinare se l’invio del modulo contiene allegati di file
Ottieni il valore del
MyArrayOf_xsd_anyTypeHolder
dell’oggettovalue
membro (ilMyArrayOf_xsd_anyTypeHolder
è stato passato all'oggettoprocessFormSubmission
metodo). Questo membro dati restituisce una matrice diObjects
. Ogni elemento all’interno delObject
un arrayObject
corrisponde ai file inviati insieme al modulo. È possibile ottenere ogni elemento all’interno dell’array e inviarlo a unBLOB
oggetto. -
Elaborazione dei dati inviati
-
Se il tipo di contenuto dati è
application/vnd.adobe.xdp+xml
otext/xml
, crea una logica di applicazione per recuperare i valori dei dati XML.- Crea un
BLOB
richiamando l'oggettoFormsResult
dell’oggettogetOutputContent
metodo . - Crea un array di byte richiamando il
BLOB
dell’oggettogetBinaryData
metodo . - Crea un
java.io.InputStream
richiamando l'oggettojava.io.ByteArrayInputStream
e passare la matrice dei byte. - Crea un
org.w3c.dom.DocumentBuilderFactory
chiamando l'oggetto staticoorg.w3c.dom.DocumentBuilderFactory
dell’oggettonewInstance
metodo . - Crea un
org.w3c.dom.DocumentBuilder
richiamando l'oggettoorg.w3c.dom.DocumentBuilderFactory
dell’oggettonewDocumentBuilder
metodo . - Crea un
org.w3c.dom.Document
richiamando l'oggettoorg.w3c.dom.DocumentBuilder
dell’oggettoparse
e passarejava.io.InputStream
oggetto. - Recupera il valore di ogni nodo all'interno del documento XML. Un modo per eseguire questa attività consiste nel creare un metodo personalizzato che accetta due parametri: la
org.w3c.dom.Document
e il nome del nodo di cui si desidera recuperare il valore. Questo metodo restituisce un valore stringa che rappresenta il valore del nodo. Nell'esempio di codice che segue questo processo, questo metodo personalizzato viene chiamatogetNodeText
. Viene mostrato il corpo di questo metodo.
- Crea un
-
Se il tipo di contenuto dati è
application/pdf
, crea una logica di applicazione per salvare i dati PDF inviati come file PDF.- Crea un
BLOB
richiamando l'oggettoFormsResult
dell’oggettogetOutputContent
metodo . - Crea un array di byte richiamando il
BLOB
dell’oggettogetBinaryData
metodo . - Crea un
java.io.File
utilizzando il relativo costruttore pubblico. Assicurati di specificare PDF come estensione del nome file. - Crea un
java.io.FileOutputStream
utilizzando il relativo costruttore e passandojava.io.File
oggetto. - Compilare il file PDF richiamando il
java.io.FileOutputStream
dell’oggettowrite
e passare l'array di byte.
- Crea un
-
Consulta anche
Richiamo di AEM Forms con codifica Base64