Beräknar formulärdata calculating-form-data
Exempel och exempel i det här dokumentet gäller endast för AEM Forms i JEE-miljö.
Forms-tjänsten kan beräkna de värden som en användare anger i ett formulär och visa resultaten. Om du vill beräkna formulärdata måste du utföra två uppgifter. Först skapar du ett formulärdesignskript som beräknar formulärdata. En formulärdesign har stöd för tre typer av skript. En skripttyp körs på klienten, en annan på servern och den tredje typen körs på både servern och klienten. Skripttypen som beskrivs i det här avsnittet körs på servern. Serverberäkningar stöds för omformningar av HTML, PDF och formulärguiden (utgått).
Som en del av formulärdesignprocessen kan du använda beräkningar och skript för att ge en bättre användarupplevelse. Beräkningar och skript kan läggas till i de flesta formulärfält och objekt. Skapa ett formulärdesignskript för att utföra beräkningsåtgärder på data som användaren matar in i ett interaktivt formulär.
Användaren anger värden i formuläret och klickar på knappen Beräkna för att visa resultatet. I följande process beskrivs ett exempelprogram som gör att en användare kan beräkna data:
- Användaren kommer åt en HTML-sida med namnet StartLoan.html som fungerar som webbprogrammets startsida. Den här sidan anropar en Java-server med namnet
GetLoanForm
. GetLoanForm
-servleten återger ett låneformulär. Det här formuläret innehåller ett skript, interaktiva fält, en beräkningsknapp och en skicka-knapp.- Användaren anger värden i formulärets fält och klickar på knappen Beräkna. Formuläret skickas till den
CalculateData
Java-server där skriptet körs. Formuläret skickas tillbaka till användaren med beräkningsresultaten visade i formuläret. - Användaren fortsätter att ange och beräkna värden tills ett tillfredsställande resultat visas. När användaren är nöjd klickar han/hon på knappen Skicka för att bearbeta formuläret. Formuläret skickas till en annan Java-server med namnet
ProcessForm
som ansvarar för att hämta skickade data. (Se Hantera skickade Forms.)
I följande diagram visas programmets logikflöde.
I följande tabell beskrivs stegen i det här diagrammet.
GetLoanForm
anropas från startsidan för HTML.GetLoanForm
använder Forms klient-API för att återge låneformuläret till klientens webbläsare. Skillnaden mellan återgivning av ett formulär som innehåller ett skript som är konfigurerat att köras på servern och återgivning av ett formulär som inte innehåller något skript är att du måste ange målplatsen som används för att köra skriptet. Om ingen målplats anges körs inte ett skript som är konfigurerat att köras på servern. Tänk dig till exempel programmet som introducerades i det här avsnittet. Java-servern CalculateData
är målplatsen där skriptet körs.CalculateData
, där skriptet körs.ProcessForm
.Vanligtvis innehåller ett formulär som skickas som PDF-innehåll skript som körs på klienten. Serverberäkningar kan dock också utföras. En Skicka-knapp kan inte användas för att beräkna skript. I det här fallet utförs inte beräkningar eftersom Forms-tjänsten anser att interaktionen är fullständig.
För att illustrera användningen av ett formulärdesignskript undersöker det här avsnittet ett enkelt interaktivt formulär som innehåller ett skript som är konfigurerat att köras på servern. I följande diagram visas en formulärdesign som innehåller ett skript som lägger till värden som en användare anger i de första två fälten och som visar resultatet i det tredje fältet.
A. Ett fält med namnet NumericField1 B. Ett fält med namnet NumericField2 C. Ett fält med namnet NumericField3
Skriptets syntax i den här formulärdesignen är följande:
NumericField3 = NumericField2 + NumericField1
I den här formulärdesignen är knappen Beräkna en kommandoknapp och skriptet finns i knappens Click
-händelse. När en användare anger värden i de två första fälten (NumericField1 och NumericField2) och klickar på knappen Beräkna, skickas formuläret till Forms-tjänsten där skriptet körs. Forms-tjänsten återger formuläret till klientenheten med resultatet av beräkningen som visas i fältet NumericField3.
Sammanfattning av steg summary-of-steps
Utför följande uppgifter för att beräkna formulärdata:
- Inkludera projektfiler.
- Skapa ett Forms Client API-objekt.
- Hämta ett formulär som innehåller ett beräkningsskript.
- Skriv tillbaka formulärdataströmmen till klientens webbläsare
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 FormsServiceService
-objekt.
Hämta ett formulär som innehåller ett beräkningsskript
Du använder API:t för Forms-tjänstklienten för att skapa programlogik som hanterar ett formulär som innehåller ett skript som är konfigurerat att köras på servern. Processen liknar hantering av ett skickat formulär. (Se Hantera skickade Forms.)
Kontrollera att bearbetningstillståndet som är associerat med det skickade formuläret är 1
(Calculate)
, vilket innebär att Forms-tjänsten utför en beräkningsåtgärd på formulärdata och att resultaten måste skrivas tillbaka till användaren. I så fall körs ett skript som är konfigurerat att köras på servern automatiskt.
Skriv tillbaka formulärdataströmmen till klientwebbläsaren
När du har verifierat att bearbetningstillståndet som är kopplat till ett skickat formulär är 1
måste du skriva tillbaka resultaten till klientens webbläsare. När formuläret visas visas det beräknade värdet i respektive fält.
Se även
Inkluderar AEM Forms Java-biblioteksfiler
Beräkna formulärdata med Java API
Beräkna formulärdata med webbtjänstens API
Ange anslutningsegenskaper
Forms Service API - snabbstart
Återge interaktiv PDF forms
Skapa webbprogram som återger Forms
Beräkna formulärdata med Java API calculate-form-data-using-the-java-api
Beräkna formulärdata 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 ett formulär som innehåller ett beräkningsskript
-
Om du vill hämta formulärdata som innehåller ett beräkningsskript skapar du ett
com.adobe.idp.Document
-objekt med hjälp av dess konstruktor och anroparjavax.servlet.http.HttpServletResponse
-objektetsgetInputStream
-metod inifrån konstruktorn. -
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 genom att ange ett eller flera värden för miljövariabeln
CONTENT_TYPE
. Om du till exempel vill hantera XML- och PDF-data anger du följande strängvärde för den här parametern:CONTENT_TYPE=application/xml&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.
Metoden
processFormSubmission
returnerar ettFormsResult
-objekt som innehåller resultaten av formuläröverföringen. - Objektet
-
Kontrollera att bearbetningstillståndet som är associerat med ett skickat formulär är
1
genom att anropaFormsResult
-objektetsgetAction
-metod. Om den här metoden returnerar värdet1
utfördes beräkningen och data kan skrivas tillbaka till klientens webbläsare.
-
-
Skriv tillbaka formulärdataströmmen till klientens webbläsare
- Skapa ett
javax.servlet.ServletOutputStream
-objekt som används för att skicka en formulärdataström till klientens webbläsare. - Skapa ett
com.adobe.idp.Document
-objekt genom att anropa metodengetOutputContent
förFormsResult
-objektet. - Skapa ett
java.io.InputStream
-objekt genom att anropacom.adobe.idp.Document
-objektetsgetInputStream
-metod. - Skapa en bytearray och fyll i den med formulärdataströmmen genom att anropa
InputStream
-objektetsread
-metod och skicka bytearrayen som ett argument. - Anropa
javax.servlet.ServletOutputStream
-objektetswrite
-metod för att skicka formulärdataströmmen till klientens webbläsare. Skicka bytearrayen till metodenwrite
.
- Skapa ett
Se även
Inkluderar AEM Forms Java-biblioteksfiler
Ange anslutningsegenskaper
Beräkna formulärdata med webbtjänstens API calculate-form-data-using-the-web-service-api
Beräkna formulärdata 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 ett formulär som innehåller ett beräkningsskript
-
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 medjavax.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
FormsServiceClient
-objektetsprocessFormSubmission
-metod och skicka följande värden:- Objektet
BLOB
som innehåller formulärdata. - Ett strängvärde som anger miljövariabler inkluderade alla relevanta HTTP-huvuden. Du kan till exempel ange följande strängvärde:
HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml
- 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. Mer information finns i . - 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. MetodenprocessFormSubmission
returnerar ettFormsResult
-objekt som innehåller resultaten av formuläröverföringen. - Objektet
-
Kontrollera att bearbetningstillståndet som är associerat med ett skickat formulär är
1
genom att anropaFormsResult
-objektetsgetAction
-metod. Om den här metoden returnerar värdet1
utfördes beräkningen och data kan skrivas tillbaka till klientens webbläsare.
-
-
Skriv tillbaka formulärdataströmmen till klientens webbläsare
- Skapa ett
javax.servlet.ServletOutputStream
-objekt som används för att skicka en formulärdataström till klientens webbläsare. - Skapa ett
BLOB
-objekt som innehåller formulärdata genom att anropaFormsResult
-objektetsgetOutputContent
-metod. - Skapa en bytearray och fyll i den genom att anropa
BLOB
-objektetsgetBinaryData
-metod. Den här aktiviteten tilldelar innehållet i objektetFormsResult
till bytearrayen. - Anropa
javax.servlet.http.HttpServletResponse
-objektetswrite
-metod för att skicka formulärdataströmmen till klientens webbläsare. Skicka bytearrayen till metodenwrite
.
- Skapa ett
Se även
Anropa AEM Forms med Base64-kodning