本檔案中的範例和範例僅適用於JEE環境上的AEM Forms。
Forms服務可計算使用者在表單中輸入的值,並顯示結果。 若要計算表單資料,您必須執行兩項工作。 首先,您要建立計算表單資料的表單設計指令碼。 表單設計支援三種類型的指令碼。 一種指令碼類型在客戶端上運行,另一種類型在伺服器上運行,第三種類型在伺服器和客戶端上運行。 本主題中討論的指令碼類型在伺服器上運行。 HTML、PDF和表單指南(已過時)轉換支援伺服器端計算。
在表單設計程式中,您可以運用計算和指令碼,提供更豐富的使用者體驗。 計算和指令碼可新增至大部分表單欄位和物件。 您必須建立表單設計指令碼,以對使用者進入互動式表單的資料執行計算操作。
使用者在表單中輸入值,然後按一下「計算」按鈕以檢視結果。 以下過程描述了一個示例應用程式,它使用戶能夠計算資料:
GetLoanForm
.GetLoanForm
servlet轉譯貸款表單。 此表單包含指令碼、互動式欄位、計算按鈕和提交按鈕。CalculateData
執行指令碼的Java Servlet。 表單會傳回給使用者,且表單中會顯示計算結果。ProcessForm
負責擷取已提交資料。 (請參閱 處理已提交的Forms.)下圖顯示應用程式的邏輯流程。
下表說明此圖中的步驟。
步驟 |
說明 |
---|---|
1 |
此 |
2 |
此 |
3 |
使用者將資料輸入互動式欄位,然後按一下「計算」按鈕。 表單會傳送至 |
4 |
表單會呈現回網頁瀏覽器,且表單中會顯示計算結果。 |
5 |
當值滿意時,使用者按一下「提交」按鈕。 表單會傳送至另一個名為的Java Servlet |
通常,作為PDF內容提交的表單包含在用戶端上執行的指令碼。 不過,也可執行伺服器端計算。 「提交」按鈕無法用於計算指令碼。 在此情況下,不會執行計算,因為Forms服務會將互動視為完成。
為了說明表單設計指令碼的使用方式,本節將檢查一個簡單的互動式表單,該表單包含一個配置為在伺服器上運行的指令碼。 下圖顯示的表單設計包含一個指令碼,該指令碼將用戶輸入到前兩個欄位中的值添加到第三個欄位中,並顯示結果。
答: 名為NumericField1的欄位 B. 名為NumericField2的欄位 C. 名為NumericField3的欄位
此表單設計中指令碼的語法如下:
NumericField3 = NumericField2 + NumericField1
在此窗體設計中,「計算」按鈕是命令按鈕,指令碼位於此按鈕的 Click
事件。 當使用者在前兩個欄位(NumericField1和NumericField2)中輸入值,然後按一下「計算」按鈕時,表單會傳送至Forms服務,在該服務中執行指令碼。 Forms服務會將表單轉譯回用戶端裝置,而NumericField3欄位中會顯示計算結果。
如需建立表單設計指令碼的相關資訊,請參閱 Forms Designer.
如需Forms服務的詳細資訊,請參閱 AEM Forms服務參考.
要計算表單資料,請執行以下任務:
包含項目檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用Web服務,請確定您包含Proxy檔案。
建立Forms用戶端API物件
您必須先建立Forms服務用戶端,才能以程式設計方式執行Forms服務用戶端API作業。 如果您使用Java API,請建立 FormsServiceClient
物件。 如果您使用Forms網站服務API,請建立 FormsServiceService
物件。
檢索包含計算指令碼的表單
您可使用Forms服務用戶端API來建立應用程式邏輯,以處理包含設定為在伺服器上執行之指令碼的表單。 此程式類似於處理提交的表單。 (請參閱 處理已提交的Forms.)
確認已提交表單的相關處理狀態為 1
(Calculate)
,這表示Forms服務正在對表單資料執行計算操作,且結果必須寫回給使用者。 在此情況下,會自動執行設定為在伺服器上執行的指令碼。
將表單資料流寫回客戶端Web瀏覽器
確認已提交表單的相關處理狀態為之後 1
,必須將結果寫回用戶端網頁瀏覽器。 顯示表單時,計算值會出現在適當欄位中。
另請參閱
包含AEM Forms Java程式庫檔案
使用Java API計算表單資料
使用網站服務API計算表單資料
設定連接屬性
Forms服務API快速入門
轉譯互動式PDF forms
建立可轉譯Forms的網頁應用程式
使用Forms API(Java)計算表單資料:
包含項目檔案
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-forms-client.jar。
建立Forms用戶端API物件
ServiceClientFactory
包含連接屬性的對象。FormsServiceClient
對象,使用其建構子並傳遞 ServiceClientFactory
物件。檢索包含計算指令碼的表單
要檢索包含計算指令碼的表單資料,請建立 com.adobe.idp.Document
對象,使用其建構子並調用 javax.servlet.http.HttpServletResponse
物件 getInputStream
方法。
叫用 FormsServiceClient
物件 processFormSubmission
方法,並傳遞下列值:
com.adobe.idp.Document
包含表單資料的物件。CONTENT_TYPE
環境變數。 例如,要處理XML和PDF資料,請為此參數指定以下字串值: CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf
HTTP_USER_AGENT
標題值;例如, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
.RenderOptionsSpec
儲存運行時選項的對象。此 processFormSubmission
方法傳回 FormsResult
包含表單提交結果的物件。
確認已提交表單的相關處理狀態為 1
叫用 FormsResult
物件 getAction
方法。 如果此方法傳回值 1
,則計算已執行,且資料可寫回用戶端網頁瀏覽器。
將表單資料流寫回客戶端Web瀏覽器
javax.servlet.ServletOutputStream
用於將表單資料流發送到客戶端web瀏覽器的對象。com.adobe.idp.Document
對象,方法是調用 FormsResult
物件s getOutputContent
方法。java.io.InputStream
對象,方法是調用 com.adobe.idp.Document
物件 getInputStream
方法。InputStream
物件 read
方法,並將位元組陣列傳遞為引數。javax.servlet.ServletOutputStream
物件 write
將表單資料流傳送至用戶端網頁瀏覽器的方法。 將位元組陣列傳遞至 write
方法。另請參閱
使用Forms API(網站服務)計算表單資料:
包含項目檔案
建立Forms用戶端API物件
建立 FormsService
對象和設定驗證值。
檢索包含計算指令碼的表單
若要擷取張貼至Java Servlet的表單資料,請建立 BLOB
物件,使用其建構子。
建立 java.io.InputStream
物件,使用 javax.servlet.http.HttpServletResponse
物件 getInputStream
方法。
建立 java.io.ByteArrayOutputStream
對象,使用其建構子並傳遞長度 java.io.InputStream
物件。
複製 java.io.InputStream
物件 java.io.ByteArrayOutputStream
物件。
叫用 java.io.ByteArrayOutputStream
物件 toByteArray
方法。
填入 BLOB
對象 setBinaryData
方法,並將位元組陣列傳遞為引數。
建立 RenderOptionsSpec
物件,使用其建構子。 調用 RenderOptionsSpec
物件 setLocale
方法,並傳遞指定區域設定的字串值。
叫用 FormsServiceClient
物件 processFormSubmission
方法,並傳遞下列值:
BLOB
包含表單資料的物件。HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml
HTTP_USER_AGENT
標題值;例如, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
.RenderOptionsSpec
儲存運行時選項的對象。 如需詳細資訊,請參閱。BLOBHolder
由方法填入的物件。javax.xml.rpc.holders.StringHolder
由方法填入的物件。BLOBHolder
由方法填入的物件。BLOBHolder
由方法填入的物件。javax.xml.rpc.holders.ShortHolder
由方法填入的物件。MyArrayOf_xsd_anyTypeHolder
由方法填入的物件。 此參數用於儲存隨表單提交的檔案附件。FormsResultHolder
由方法填入且已提交表單的物件。此 processFormSubmission
方法填入 FormsResultHolder
參數與表單提交結果。 此 processFormSubmission
方法傳回 FormsResult
包含表單提交結果的物件。
確認已提交表單的相關處理狀態為 1
叫用 FormsResult
物件 getAction
方法。 如果此方法傳回值 1
,則計算已執行,且資料可寫回用戶端網頁瀏覽器。
將表單資料流寫回客戶端Web瀏覽器
javax.servlet.ServletOutputStream
用於將表單資料流發送到客戶端web瀏覽器的對象。BLOB
包含表單資料的物件,方法是叫用 FormsResult
物件 getOutputContent
方法。BLOB
物件 getBinaryData
方法。 此任務分配 FormsResult
位元組陣列的物件。javax.servlet.http.HttpServletResponse
物件 write
將表單資料流傳送至用戶端網頁瀏覽器的方法。 將位元組陣列傳遞至 write
方法。