Hantera skickade Forms handling-submitted-forms
Exempel och exempel i det här dokumentet gäller endast för AEM Forms i JEE-miljö.
Webbaserade tillämpningar där användaren kan fylla i interaktiva formulär kräver att informationen skickas tillbaka till servern. Med tjänsten Forms kan du hämta data som användaren har angett i ett interaktivt formulär. När du har hämtat data kan du bearbeta dem för att uppfylla dina affärskrav. Du kan till exempel lagra data i en databas, skicka data till ett annat program, skicka data till en annan tjänst, sammanfoga data i en formulärdesign, visa data i en webbläsare och så vidare.
Formulärdata skickas till Forms-tjänsten som antingen XML- eller PDF-data, vilket är ett alternativ som ställs in i Designer. Ett formulär som skickas som XML kan användas för att extrahera enskilda fältdatavärden. Det innebär att du kan extrahera värdet för varje formulärfält som användaren har angett i formuläret. Ett formulär som skickas som PDF data är binära data, inte XML-data. Du kan spara formuläret som en PDF-fil eller skicka det till en annan avdelning. Om du vill extrahera data från ett formulär som har skickats som XML och sedan använda formulärdata för att skapa ett PDF-dokument, anropar du en annan AEM Forms-åtgärd. (Se Skapa PDF-dokument med skickade XML-data)
I följande diagram visas data som skickas till en Java-server med namnet HandleData
från ett interaktivt formulär som visas i en webbläsare.
I följande tabell förklaras stegen i diagrammet.
HandleData
som XML-data.HandleData
innehåller programlogik för att hämta data.Hantera skickade XML-data handling-submitted-xml-data
När formulärdata skickas som XML kan du hämta XML-data som representerar skickade data. Alla formulärfält visas som noder i ett XML-schema. Nodvärdena motsvarar de värden som användaren fyllt i. Överväg ett låneformulär där varje fält i formuläret visas som en nod i XML-data. Värdet för varje nod motsvarar värdet som användaren fyller i. Anta att en användare fyller i låneformuläret med data som visas i följande formulär.
I följande bild visas motsvarande XML-data som hämtas med hjälp av Forms klienttjänstens API.
Fälten i låneformuläret. Dessa värden kan hämtas
med Java XML-klasser.
Hantera skickade PDF-data handling-submitted-pdf-data
Överväg ett webbprogram som anropar Forms-tjänsten. När Forms-tjänsten återger ett interaktivt PDF-formulär till en webbläsare fyller användaren i formuläret och skickar tillbaka det som PDF data. När Forms-tjänsten tar emot data från PDF kan den skicka data från PDF till en annan tjänst eller spara dem som en PDF-fil. I följande diagram visas programmets logikflöde.
I följande tabell beskrivs stegen i det här diagrammet.
Hantera skickade URL UTF-16-data handling-submitted-url-utf-16-data
Om formulärdata skickas som URL UTF-16-data kräver klientdatorn Adobe Reader eller Acrobat 8.1 eller senare. Om formulärdesignen innehåller en skicka-knapp med URL-kodade data (HTTP Post) och datakodningsalternativet är UTF-16, måste formulärdesignen ändras i en textredigerare som Anteckningar. Du kan ställa in kodningsalternativet på antingen UTF-16LE
eller UTF-16BE
för skicka-knappen. Designer tillhandahåller inte den här funktionen.
Sammanfattning av steg summary-of-steps
Utför följande uppgifter för att hantera skickade formulär:
- Inkludera projektfiler.
- Skapa ett Forms Client API-objekt.
- Hämta formulärdata.
- Kontrollera om formuläröverföringen innehåller bifogade filer.
- Bearbeta skickade data.
Inkludera projektfiler
Inkludera nödvändiga filer i utvecklingsprojektet. Om du skapar ett klientprogram med Java, inkluderar du de JAR-filer som behövs. Om du använder webbtjänster måste du inkludera proxyfilerna.
Skapa ett Forms Client API-objekt
Innan du programmässigt kan utföra en API-åtgärd för Forms-tjänstklienten måste du skapa en Forms-tjänstklient. Om du använder Java API skapar du ett FormsServiceClient
-objekt. Om du använder Forms webbtjänst-API:t skapar du ett FormsService
-objekt.
Hämta formulärdata
Om du vill hämta skickade formulärdata anropar du FormsServiceClient
-objektets processFormSubmission
-metod. När du anropar den här metoden måste du ange innehållstypen för det skickade formuläret. När data skickas från en webbläsare till Forms-tjänsten kan de skickas som antingen XML- eller PDF-data. Om du vill hämta data som anges i formulärfält kan dessa data skickas som XML-data.
Du kan även hämta formulärfält från ett formulär som har skickats som PDF-data genom att ange följande körningsalternativ:
- Skicka följande värde till metoden
processFormSubmission
som innehållstypparameter:CONTENT_TYPE=application/pdf
. - Ange
RenderOptionsSpec
-objektetsPDFToXDP
-värde somtrue
- Ange
RenderOptionsSpec
-objektetsExportDataFormat
-värde somXMLData
Du anger innehållstypen för det skickade formuläret när du anropar metoden processFormSubmission
. I följande lista anges tillämpliga värden för innehållstyp:
- text/xml: Representerar innehållstypen som ska användas när ett PDF-formulär skickar formulärdata som XML.
- application/x-www-form-urlencoded: Representerar innehållstypen som ska användas när ett HTML-formulär skickar data som XML.
- application/pdf: Representerar innehållstypen som ska användas när ett PDF-formulär skickar data som PDF.
application/pdf
. I PDF forms Hantera som skickas som XML med Java API-snabbstarten visas hur inskickade XML-data från ett PDF-formulär hanteras. Innehållstypen som anges i snabbstarten är text/xml
. På samma sätt visar Hantera HTML-formulär som har skickats som XML med Java API-snabbstarten hur du hanterar skickade XML-data som har skickats från ett HTML-formulär. Innehållstypen som anges i snabbstarten är application/x-www-form-urlencoded.Du hämtar formulärdata som har skickats till Forms-tjänsten och fastställer bearbetningstillståndet. Det vill säga, när data skickas till Forms-tjänsten behöver det inte innebära att Forms-tjänsten är klar med databehandlingen och att data är klara att bearbetas. Data kan till exempel skickas till Forms så att en beräkning kan utföras. När beräkningen är klar återges formuläret tillbaka till användaren med beräkningsresultaten visade. Innan du bearbetar inskickade data bör du ta reda på om Forms-tjänsten har slutfört databearbetningen.
Forms-tjänsten returnerar följande värden för att ange om databearbetningen är klar:
- 0 (Skicka): Skickade data kan nu bearbetas.
- 1 (Beräkna): Forms-tjänsten utförde en beräkningsåtgärd för data och resultaten måste återges för användaren.
- 2 (Validera): Forms-tjänsten validerade formulärdata och resultaten måste återges till användaren.
- 3 (Nästa): Den aktuella sidan har ändrats med resultat som måste skrivas till klientprogrammet.
- 4 (Föregående): Den aktuella sidan har ändrats med resultat som måste skrivas till klientprogrammet.
Kontrollera om formuläröverföringen innehåller bifogade filer
Forms som skickas till Forms kan innehålla bifogade filer. Med Acrobat inbyggda bilagefanel kan man t.ex. markera bifogade filer som ska skickas tillsammans med formuläret. Användaren kan också markera bifogade filer med hjälp av verktygsfältet HTML som återges med en HTML-fil.
När du har fastställt om ett formulär innehåller bifogade filer kan du bearbeta data. Du kan till exempel spara den bifogade filen i det lokala filsystemet.
Bearbeta skickade data
Beroende på innehållstypen för inskickade data kan du extrahera enskilda formulärfältsvärden från inskickade XML-data eller spara inskickade PDF-data som en PDF-fil (eller skicka dem till en annan tjänst). Om du vill extrahera enskilda formulärfält konverterar du skickade XML-data till en XML-datakälla och hämtar sedan XML-datakällsvärden med hjälp av org.w3c.dom
-klasser.
Se även
Inkludera AEM Forms Java-biblioteksfiler
Hantera skickade formulär med Java API handle-submitted-forms-using-the-java-api
Hantera inskickade formulär med Forms API (Java):
-
Inkludera projektfiler
Inkludera JAR-klientfiler, t.ex. adobe-forms-client.jar, i Java-projektets klassökväg.
-
Skapa ett Forms Client API-objekt
- Skapa ett
ServiceClientFactory
-objekt som innehåller anslutningsegenskaper. - Skapa ett
FormsServiceClient
-objekt med hjälp av dess konstruktor och skickaServiceClientFactory
-objektet.
- Skapa ett
-
Hämta formulärdata
- Om du vill hämta formulärdata som har publicerats på en Java-server skapar du ett
com.adobe.idp.Document
-objekt med hjälp av dess konstruktor och anroparjavax.servlet.http.HttpServletResponse
-objektetsgetInputStream
-metod inifrån konstruktorn. - Skapa ett
RenderOptionsSpec
-objekt med hjälp av dess konstruktor. Ange språkvärdet genom att anropaRenderOptionsSpec
-objektetssetLocale
-metod och skicka ett strängvärde som anger språkvärdet.
note note NOTE Du kan instruera Forms-tjänsten att skapa XDP- eller XML-data från inskickat PDF-innehåll genom att anropa RenderOptionsSpec
-objektetssetPDF2XDP
-metod och skickatrue
samt anropasetXMLData
och skickatrue
. Du kan sedan anropaFormsResult
-objektetsgetOutputXML
-metod för att hämta XML-data som motsvarar XDP/XML-data. (ObjektetFormsResult
returneras av metodenprocessFormSubmission
som förklaras i nästa delsteg.)-
Anropa
FormsServiceClient
-objektetsprocessFormSubmission
-metod och skicka följande värden:- Objektet
com.adobe.idp.Document
som innehåller formulärdata. - Ett strängvärde som anger miljövariabler inklusive alla relevanta HTTP-huvuden. Ange den innehållstyp som ska hanteras. Om du vill hantera XML-data anger du följande strängvärde för parametern:
CONTENT_TYPE=text/xml
. Om du vill hantera PDF data anger du följande strängvärde för den här parametern:CONTENT_TYPE=application/pdf
. - Ett strängvärde som anger rubrikvärdet
HTTP_USER_AGENT
, till exempel .Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. Det här parametervärdet är valfritt. - Ett
RenderOptionsSpec
-objekt som lagrar körningsalternativ.
Metoden
processFormSubmission
returnerar ettFormsResult
-objekt som innehåller resultaten av formuläröverföringen. - Objektet
-
Avgör om Forms-tjänsten har slutfört bearbetningen av formulärdata genom att anropa
FormsResult
-objektetsgetAction
-metod. Om den här metoden returnerar värdet0
är data klara att bearbetas.
- Om du vill hämta formulärdata som har publicerats på en Java-server skapar du ett
-
Kontrollera om formuläröverföringen innehåller bifogade filer
- Anropa metoden
getAttachments
för objektetFormsResult
. Den här metoden returnerar ettjava.util.List
-objekt som innehåller filer som har skickats med formuläret. - Iterera genom objektet
java.util.List
för att avgöra om det finns bifogade filer. Om det finns bifogade filer är varje element encom.adobe.idp.Document
-instans. Du kan spara de bifogade filerna genom att anropacom.adobe.idp.Document
-objektetscopyToFile
-metod och skicka ettjava.io.File
-objekt.
note note NOTE Det här steget gäller endast om formuläret skickas in som PDF. - Anropa metoden
-
Bearbeta skickade data
-
Om datainnehållstypen är
application/vnd.adobe.xdp+xml
ellertext/xml
skapar du programlogik för att hämta XML-datavärden.- Skapa ett
com.adobe.idp.Document
-objekt genom att anropaFormsResult
-objektetsgetOutputContent
-metod. - Skapa ett
java.io.InputStream
-objekt genom att anropa konstruktornjava.io.DataInputStream
och skicka objektetcom.adobe.idp.Document
. - Skapa ett
org.w3c.dom.DocumentBuilderFactory
-objekt genom att anropa det statiskaorg.w3c.dom.DocumentBuilderFactory
-objektetsnewInstance
-metod. - Skapa ett
org.w3c.dom.DocumentBuilder
-objekt genom att anropaorg.w3c.dom.DocumentBuilderFactory
-objektetsnewDocumentBuilder
-metod. - Skapa ett
org.w3c.dom.Document
-objekt genom att anropaorg.w3c.dom.DocumentBuilder
-objektetsparse
-metod och skickajava.io.InputStream
-objektet. - Hämta värdet för varje nod i XML-dokumentet. Ett sätt att utföra den här uppgiften är att skapa en anpassad metod som accepterar två parametrar: objektet
org.w3c.dom.Document
och namnet på noden vars värde du vill hämta. Den här metoden returnerar ett strängvärde som representerar nodens värde. I kodexemplet som följer den här processen kallas den här anpassade metodengetNodeText
. Innehållet i den här metoden visas.
- Skapa ett
-
Om datainnehållstypen är
application/pdf
skapar du programlogik för att spara skickade PDF-data som en PDF-fil.- Skapa ett
com.adobe.idp.Document
-objekt genom att anropaFormsResult
-objektetsgetOutputContent
-metod. - Skapa ett
java.io.File
-objekt med hjälp av dess offentliga konstruktor. Ange PDF som filnamnstillägg. - Fyll i PDF-filen genom att anropa
com.adobe.idp.Document
-objektetscopyToFile
-metod och skickajava.io.File
-objektet.
- Skapa ett
-
Se även
Snabbstart (SOAP): Hantera PDF forms som har skickats som XML med Java API
Snabbstart (SOAP läge): Hantera HTML-formulär som skickats som XML med Java API
Snabbstart (SOAP läge): Hantera PDF forms som skickats som PDF med Java API
Hantera skickade PDF-data med webbtjänstens API handle-submitted-pdf-data-using-the-web-service-api
Hantera inskickade formulär med Forms API (webbtjänst):
-
Inkludera projektfiler
- Skapa Java-proxyklasser som använder Forms tjänst-WSDL.
- Inkludera Java-proxyklasserna i klassökvägen.
-
Skapa ett Forms Client API-objekt
Skapa ett
FormsService
-objekt och ange autentiseringsvärden. -
Hämta formulärdata
-
Om du vill hämta formulärdata som har publicerats på en Java-server skapar du ett
BLOB
-objekt med hjälp av dess konstruktor. -
Skapa ett
java.io.InputStream
-objekt genom att anropajavax.servlet.http.HttpServletResponse
-objektetsgetInputStream
-metod. -
Skapa ett
java.io.ByteArrayOutputStream
-objekt med hjälp av dess konstruktor och skicka längden påjava.io.InputStream
-objektet. -
Kopiera innehållet i objektet
java.io.InputStream
till objektetjava.io.ByteArrayOutputStream
. -
Skapa en bytearray genom att anropa metoden
toByteArray
för objektetjava.io.ByteArrayOutputStream
. -
Fyll i objektet
BLOB
genom att anropa desssetBinaryData
-metod och skicka bytearrayen som ett argument. -
Skapa ett
RenderOptionsSpec
-objekt med hjälp av dess konstruktor. Ange språkvärdet genom att anropaRenderOptionsSpec
-objektetssetLocale
-metod och skicka ett strängvärde som anger språkvärdet. -
Anropa
FormsService
-objektetsprocessFormSubmission
-metod och skicka följande värden:- Objektet
BLOB
som innehåller formulärdata. - Ett strängvärde som anger miljövariabler inklusive alla relevanta HTTP-huvuden. Ange den innehållstyp som ska hanteras. Om du vill hantera XML-data anger du följande strängvärde för parametern:
CONTENT_TYPE=text/xml
. Om du vill hantera PDF data anger du följande strängvärde för den här parametern:CONTENT_TYPE=application/pdf
. - Ett strängvärde som anger rubrikvärdet
HTTP_USER_AGENT
, till exempelMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - Ett
RenderOptionsSpec
-objekt som lagrar körningsalternativ. - Ett tomt
BLOBHolder
-objekt som fylls i av metoden. - Ett tomt
javax.xml.rpc.holders.StringHolder
-objekt som fylls i av metoden. - Ett tomt
BLOBHolder
-objekt som fylls i av metoden. - Ett tomt
BLOBHolder
-objekt som fylls i av metoden. - Ett tomt
javax.xml.rpc.holders.ShortHolder
-objekt som fylls i av metoden. - Ett tomt
MyArrayOf_xsd_anyTypeHolder
-objekt som fylls i av metoden. Den här parametern används för att lagra bifogade filer som skickas tillsammans med formuläret. - Ett tomt
FormsResultHolder
-objekt som fylls i av metoden med formuläret som skickas.
Metoden
processFormSubmission
fyller i parameternFormsResultHolder
med resultatet av formuläröverföringen. - Objektet
-
Avgör om Forms-tjänsten har slutfört bearbetningen av formulärdata genom att anropa
FormsResult
-objektetsgetAction
-metod. Om den här metoden returnerar värdet0
är formulärdata klara att bearbetas. Du kan hämta ettFormsResult
-objekt genom att hämta värdet förFormsResultHolder
-objektetsvalue
-datamedlem.
-
-
Kontrollera om formuläröverföringen innehåller bifogade filer
Hämta värdet för
MyArrayOf_xsd_anyTypeHolder
-objektetsvalue
-datamedlem (objektetMyArrayOf_xsd_anyTypeHolder
skickades till metodenprocessFormSubmission
). Den här datamedlemmen returnerar en matris påObjects
. Varje element i arrayenObject
är enObject
som motsvarar de filer som har skickats in tillsammans med formuläret. Du kan hämta varje element i arrayen och omvandla det till ettBLOB
-objekt. -
Bearbeta skickade data
-
Om datainnehållstypen är
application/vnd.adobe.xdp+xml
ellertext/xml
skapar du programlogik för att hämta XML-datavärden.- Skapa ett
BLOB
-objekt genom att anropaFormsResult
-objektetsgetOutputContent
-metod. - Skapa en bytearray genom att anropa metoden
getBinaryData
för objektetBLOB
. - Skapa ett
java.io.InputStream
-objekt genom att anropa konstruktornjava.io.ByteArrayInputStream
och skicka bytearrayen. - Skapa ett
org.w3c.dom.DocumentBuilderFactory
-objekt genom att anropa det statiskaorg.w3c.dom.DocumentBuilderFactory
-objektetsnewInstance
-metod. - Skapa ett
org.w3c.dom.DocumentBuilder
-objekt genom att anropaorg.w3c.dom.DocumentBuilderFactory
-objektetsnewDocumentBuilder
-metod. - Skapa ett
org.w3c.dom.Document
-objekt genom att anropaorg.w3c.dom.DocumentBuilder
-objektetsparse
-metod och skickajava.io.InputStream
-objektet. - Hämta värdet för varje nod i XML-dokumentet. Ett sätt att utföra den här uppgiften är att skapa en anpassad metod som accepterar två parametrar: objektet
org.w3c.dom.Document
och namnet på noden vars värde du vill hämta. Den här metoden returnerar ett strängvärde som representerar nodens värde. I kodexemplet som följer den här processen kallas den här anpassade metodengetNodeText
. Innehållet i den här metoden visas.
- Skapa ett
-
Om datainnehållstypen är
application/pdf
skapar du programlogik för att spara skickade PDF-data som en PDF-fil.- Skapa ett
BLOB
-objekt genom att anropaFormsResult
-objektetsgetOutputContent
-metod. - Skapa en bytearray genom att anropa metoden
getBinaryData
för objektetBLOB
. - Skapa ett
java.io.File
-objekt med hjälp av dess offentliga konstruktor. Ange PDF som filnamnstillägg. - Skapa ett
java.io.FileOutputStream
-objekt med hjälp av dess konstruktor och skickajava.io.File
-objektet. - Fyll i PDF-filen genom att anropa
java.io.FileOutputStream
-objektetswrite
-metod och skicka bytearrayen.
- Skapa ett
-
Se även
Anropa AEM Forms med Base64-kodning