將Forms轉譯為HTML

上次更新: 2023-12-07
  • 建立對象:
  • Developer

本檔案中的範例和範例僅適用於JEE環境上的AEM Forms 。

Forms服務會根據網頁瀏覽器的HTTP要求,將表單轉譯為HTML。 將表單轉譯為HTML的好處是,使用者端網頁瀏覽器所在的電腦不需要Adobe Reader、Acrobat或Flash Player (適用於表單指南(已棄用))。

若要將表單轉譯為HTML,表單設計必須儲存為XDP檔案。 儲存為PDF檔案的表單設計無法呈現為HTML。 在Designer中開發將轉譯為HTML的表單設計時,請考慮下列條件:

  • 請勿使用物件的邊框屬性在表單上繪製線條、方框或格點。 有些瀏覽器可能不會將邊框依照在預覽中顯示的樣式完全對齊。 物件可能會呈現圖層狀,或可能將其他物件推離其預期位置。
  • 您可以使用直線、矩形和圓來定義背景。
  • 繪製的文字比看起來容納文字所需的文字稍大。 有些網頁瀏覽器無法清楚顯示文字。
注意

呈現包含TIFF影像的表單時,使用 FormServiceClient 物件的 (Deprecated) renderHTMLFormrenderHTMLForm2 方法,則TIFF影像不會顯示在Internet Explorer或Mozilla Firefox瀏覽器中顯示的呈現HTML表單中。 這些瀏覽器不提供TIFF影像的原生支援。

HTML頁面

當表單設計呈現為HTML表單時,每個第二層子表單都會呈現為HTML頁面(面板)。 您可以在Designer中檢視子表單的階層。 屬於根子表單的子表單(根子表單的預設名稱為form1)是面板子表單。 下列範例顯示表單設計的子表單。

     form1
         Master Pages
         PanelSubform1
             NestedDynamicSubform
                 TextEdit1
         PanelSubform2
             TextEdit1
         PanelSubform3
             TextEdit1
         PanelSubform4
             TextEdit1

當表單設計呈現為HTML表單時,面板不受任何特定頁面大小的限制。 如果您有動態子表單,應該將它們巢狀內嵌在面板子表單中。 動態子表單可擴充至無限數量的HTML頁面。

當表單轉譯為HTML表單時,頁面大小(對轉譯為PDF的表單進行分頁所必需)沒有任何意義。 因為具有可流動配置的表單可展開至無限數量的HTML頁面,請務必避免主版頁面上的頁尾。 主版頁面內容區域下方的頁尾可能會覆寫流經頁面邊界的HTML內容。

您必須使用,明確地在面板之間移動 xfa.host.pageUpxfa.host.pageDown 方法。 若要變更頁面,請將表單傳送至Forms服務,並讓Forms服務將表單轉譯回使用者端裝置(通常為網頁瀏覽器)。

注意

將表單傳送至Forms服務,然後讓Forms服務將表單轉譯回使用者端裝置的程式,稱為將資料四捨五入至伺服器。

注意

如果您想要自訂HTML表單上「HTML數位簽名」按鈕的外觀,您必須在fscdigsig.css檔案(在adobe-forms-ds.ear > adobe-forms-ds.war檔案中)中變更下列屬性:

.fsc-ds-ssb:此樣式表適用於空白符號欄位的情況。

.fsc-ds-ssv:此樣式表適用於有有效符號欄位的情況。

.fsc-ds-ssc:此樣式表適用於有「有效符號」欄位但資料已變更的情況。

.fsc-ds-ssi:此樣式表適用於有無效符號欄位的情況。

.fsc-ds-popup-bg:未使用此樣式表屬性。

.fsc-ds-popup-btn:未使用此樣式表屬性。

執行指令碼

表單作者會指定指令碼是在伺服器上還是在使用者端上執行。 Forms服務會建立分散式的事件處理環境,用於執行可在使用者端與伺服器之間分散的表單情報(透過使用 runAt 屬性。 如需此屬性或在表單設計中建立指令碼的相關資訊,請參閱 Forms Designer

Forms服務可在表單轉譯時執行指令碼。 因此,您可以連線至資料庫或使用者端可能無法使用的Web服務,預先填入含有資料的表單。 您也可以設定按鈕的 Click 要在伺服器上執行的事件,讓使用者端將資料往返至伺服器。 這可讓使用者端在使用者與表單互動時,執行可能需要伺服器資源的指令碼,例如企業資料庫。 對於HTML表單,formcalc指令碼只能在伺服器上執行。 因此,您必須標籤這些指令碼以在 serverboth.

您可以藉由呼叫「 」,設計可在頁面(面板)之間移動的表單 xfa.host.pageUpxfa.host.pageDown 方法。 此指令碼會放置在按鈕的 Click 事件與 runAt 屬性已設定為 Both. 您選擇的原因 Both 因此,Adobe Reader或Acrobat (適用於呈現為PDF的表單)無需前往伺服器即可變更頁面,而HTML表單則可藉由將資料舍入至伺服器來變更頁面。 也就是說,表單會傳送至Forms服務,而表單會呈現為HTML並顯示新頁面。

建議您不要將指令碼變數和表單欄位命名為相同的名稱,例如專案。 有些網頁瀏覽器(例如Internet Explorer)可能無法初始化與表單欄位同名的變數,進而造成指令碼錯誤。 建議您將表單欄位和指令碼變數命名為不同名稱。

在轉譯同時包含頁面導覽功能和表單指令碼的HTML表單時(例如,假設指令碼在每次轉譯表單時都會從資料庫擷取欄位資料),請確保表單指令碼採用form:calculate event格式,而不是form:readyevent格式。

form:ready事件形式的表單指令碼在表單的初始轉譯期間只會執行一次,而不會在後續的頁面擷取中執行。 相反地,form:calculate事件會針對每個轉譯了表單的頁面導覽執行。

注意

在多頁表單上,如果您移至其他頁面,JavaScript對頁面所做的變更不會保留。

您可以在提交表單前叫用自訂指令碼。 此功能適用於所有可用瀏覽器。 但是,它只能在使用者轉譯具有它的HTML表單時使用 Output Type 屬性設定為 Form Body. 當 Output TypeFull HTML. 如需設定此功能的步驟,請參閱管理說明中的設定表單。

首先,定義在提交表單前呼叫的回呼函式,其中函式名稱為 _user_onsubmit. 我們假設函式不會擲回任何例外狀況,或如果擲回了,則會忽略例外狀況。 建議將JavaScript函式放在html的head區段中;不過,您可以在指令碼標籤的結尾之前的任何位置宣告該函式,其中包括 xfasubset.js.

表單伺服器轉譯含有下拉式清單的XDP時,除了建立下拉式清單外,還會建立兩個隱藏的文字欄位。 這些文字欄位儲存下拉式清單的資料(其中一個儲存選項的顯示名稱,另一個儲存選項的值)。 因此,每次使用者提交表單時,都會提交下拉式清單的整個資料。 假設您不想每次都提交那麼多的資料,您可以撰寫自訂指令碼來停用它。 例如:下拉式清單的名稱為 drpOrderedByStateProv 而且會包裝在子表單標題下。 HTML輸入元素的名稱將為 header[0].drpOrderedByStateProv[0]. 儲存及提交下拉式清單資料的隱藏欄位名稱如下: header[0].drpOrderedByStateProv_DISPLAYITEMS_[0] header[0].drpOrderedByStateProv_VALUEITEMS_[0]

如果您不想張貼資料,可以下列方式停用這些輸入元素。 var __CUSTOM_SCRIPTS_VERSION = 1; //enabling the feature function _user_onsubmit() { var elems = document.getElementsByName("header[0].drpOrderedByStateProv_DISPLAYITEMS_[0]"); elems[0].disabled = true; elems = document.getElementsByName("header[0].drpOrderedByStateProv_VALUEITEMS_[0]"); elems[0].disabled = true; }

header[0].drpOrderedByStateProv_DISPLAYITEMS_[0] header[0].drpOrderedByStateProv_VALUEITEMS_[0]
var __CUSTOM_SCRIPTS_VERSION = 1; //enabling the feature
    function _user_onsubmit() {
    var elems = document.getElementsByName("header[0].drpOrderedByStateProv_DISPLAYITEMS_[0]");
    elems[0].disabled = true;
    elems = document.getElementsByName("header[0].drpOrderedByStateProv_VALUEITEMS_[0]");
    elems[0].disabled = true;
    }

XFA子集

建立要呈現為HTML的表單設計時,您必須將指令碼限製為JavaScript語言中指令碼的XFA子集。

在使用者端上執行或在使用者端和伺服器上執行的指令碼必須寫入XFA子集中。 在伺服器上執行的指令碼可以使用完整的XFA指令碼模型,也可以使用FormCalc。 如需使用JavaScript的相關資訊,請參閱 Forms Designer.

在使用者端上執行指令碼時,只有目前顯示的面板可以使用指令碼;例如,當面板B顯示時,您無法對面板A中的欄位執行指令碼。 在伺服器上執行指令碼時,可以存取所有面板。

在使用者端執行的指令碼中使用指令碼物件模型(SOM)運算式時,請務必小心。 在使用者端執行的指令碼僅支援SOM運算式的簡化子集。

事件計時

XFA子集會定義對應至HTML事件的XFA事件。 計算及驗證事件的時間在行為上稍有不同。 在網頁瀏覽器中,當您退出欄位時會執行完整計算事件。 當您變更欄位值時,計算事件不會自動執行。 您可以藉由呼叫 xfa.form.execCalculate 方法。

在網頁瀏覽器中,驗證事件僅在退出欄位或提交表單時執行。 您可以使用強制驗證事件 xfa.form.execValidate 方法。

在網頁瀏覽器中顯示的Forms (與Adobe Reader或Acrobat不同)符合XFA null測試(錯誤或警告)的強制欄位。

  • 如果Null測試產生錯誤,而您結束欄位卻未指定值,則會顯示訊息方塊,而且您會在按一下「確定」後重新定位至欄位。
  • 如果Null測試產生警告,而您結束欄位時未指定值,系統會提示您按一下「確定」或「取消」,讓您選擇繼續但不指定值或返回欄位以輸入值。

如需有關空值測試的詳細資訊,請參閱 Forms Designer.

表單按鈕

按一下提交按鈕會將表單資料傳送至Forms服務,並代表表單處理的結尾。 此 preSubmit 事件可以設定為在使用者端或伺服器上執行。 此 preSubmit 如果設定要在使用者端上執行,則事件會在表單提交之前執行。 否則, preSubmit 事件會在表單提交期間在伺服器上執行。 如需關於的詳細資訊 preSubmit 事件,請參閱 Forms Designer.

如果按鈕沒有關聯的使用者端指令碼,則會將資料提交至伺服器,在伺服器上執行計算,並重新產生HTML表單。 如果按鈕包含使用者端指令碼,資料不會傳送至伺服器,而使用者端指令碼會在網頁瀏覽器中執行。

HTML4.0網頁瀏覽器

僅支援HTML4.0的網頁瀏覽器無法支援XFA子集使用者端指令碼模型。 建立可在HTML4.0和MSDHTML或CSS2HTML中運作的表單設計時,標籤為在使用者端執行的指令碼實際上將會在伺服器上執行。 例如,假設使用者按一下位於HTML4.0網頁瀏覽器中所顯示表單上的按鈕。 在此情況下,表單資料會傳送至執行使用者端指令碼的伺服器。

建議您將表單邏輯放置在計算事件中,這些計算事件會在HTML為4.0的伺服器上執行,以及在MSDHTML或CSS2HTML的使用者端上執行。

維護簡報變更

當您在HTML頁面(面板)之間移動時,只會維持資料的狀態。 不會維護背景顏色或強制欄位設定等設定(如果與初始設定不同)。 若要維持呈現狀態,您必須建立代表欄位呈現狀態的欄位(通常是隱藏的)。 如果您將指令碼新增到欄位的 Calculate 根據隱藏欄位值變更簡報的事件,您可以在HTML頁面(面板)之間來回移動時保留簡報狀態。

以下指令碼會維護 fillColor 的欄位,其依據為 hiddenField. 假設此指令碼位於欄位的 Calculate 事件。

     If (hiddenField.rawValue == 1)
         this.fillColor = "255,0,0"
     else
         this.fillColor = "0,255,0"
注意

巢狀內嵌於表格儲存格時,靜態物件不會顯示在演算後的HTML表單中。 例如,巢狀在表格儲存格內的圓形和矩形不會顯示在轉譯HTML表單中。 不過,當這些相同的靜態物件位於表格外部時,會正確顯示。

數位簽署HTML表單

如果表單呈現為下列HTML轉換之一,則您無法簽署包含數位簽名欄位的HTML表單:

  • AHTML
  • HTML4
  • 靜態HTML
  • NoScriptXHTML

如需以數位方式簽署檔案的詳細資訊,請參閱 數位簽署和認證檔案

呈現符合協助工具指南的XHTML表單

您可以呈現符合協助工具准則的完整HTML表單。 也就是說,表單會在完整HTML標籤中呈現,而不是在body標籤中呈現HTML表單(不是完整的HTML頁面)。

驗證表單資料

將表單轉譯為HTML表單時,建議您限制在表單欄位中使用驗證規則。 HTML表單可能不支援某些驗證規則。 例如,將MM-DD-YYYY的驗證模式套用至 Date/Time 表單設計中呈現為HTML表單的欄位無法正常運作,即使正確輸入日期亦然。 不過,此驗證模式適用於轉譯為PDF的表單。

注意

如需Forms服務的詳細資訊,請參閱 AEM Forms服務參考.

步驟摘要

若要呈現HTML表單,請執行下列步驟:

  1. 包含專案檔案。
  2. 建立Forms使用者端API物件。
  3. 設定HTML執行階段選項。
  4. 呈現HTML表單。
  5. 將表單資料流寫入使用者端網頁瀏覽器。

包含專案檔案

將必要的檔案納入您的開發專案中。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請確定您包含Proxy檔案。

建立Forms使用者端API物件

您必須先建立表單資料整合服務使用者端,才能以程式設計方式將資料匯入PDFformClient API。 建立服務使用者端時,您可以定義呼叫服務所需的連線設定。

設定HTML執行階段選項

呈現HTML表單時,您可以設定HTML執行階段選項。 例如,您可以將工具列新增至HTML表單,讓使用者能夠選取位於使用者端電腦上的檔案附件,或擷取以HTML表單呈現的檔案附件。 HTML工具列預設為停用。 若要將工具列新增至HTML表單,您必須以程式設計方式設定執行階段選項。 依預設,HTML工具列包含下列按鈕:

  • Home:提供應用程式網頁根目錄的連結。
  • Upload:提供使用者介面,以選取要附加至目前表單的檔案。
  • Download:提供顯示附加檔案的使用者介面。

當HTML表單上出現HTML工具列時,使用者可以選擇最多10個要與表單資料一起提交的檔案。 提交檔案後,Forms服務即可擷取檔案。

將表單轉譯為HTML時,您可以指定使用者代理程式值。 使用者代理值可提供瀏覽器和系統資訊。 這是選用值,您可以傳遞空字串值。 使用Java API快速入門呈現HTML表單會顯示如何取得使用者代理程式值,並將其用來將表單呈現為HTML。

若要指定張貼表單資料的HTTP URL,可使用Forms服務使用者端API設定目標URL,或在XDP表單設計內含的提交按鈕中指定。 如果在表單設計中指定了目標URL,則請勿使用Forms服務使用者端API來設定值。

注意

使用工具列轉譯HTML表單是選用專案。

注意

如果您轉譯AHTML表單,建議您不要將工具列新增至表單。

呈現HTML表單

若要呈現HTML表單,請指定在Designer中建立並儲存為XDP檔案的表單設計。 選取HTML轉換型別。 例如,您可以指定轉譯Internet Explorer 5.0或更新版本動態HTML的HTML轉換型別。

呈現HTML表單也需要值,例如呈現其他表單型別所需的URI值。

將表單資料流寫入使用者端網頁瀏覽器

Forms服務轉譯HTML表單時,會傳回您必須寫入使用者端網頁瀏覽器的表單資料流。 寫入使用者端網頁瀏覽器時,使用者可看到HTML表單。

另請參閱

使用Java API將表單轉譯為HTML

使用網站服務API將表單轉譯為HTML

包含AEM Forms Java程式庫檔案

設定連線屬性

Forms服務API快速入門

呈現互動式PDF forms

使用自訂工具列呈現HTMLForms

建立轉譯Forms的網頁應用程式

使用Java API將表單轉譯為HTML

使用Forms API (Java)轉譯HTML表單:

  1. 包含專案檔案

    在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-forms-client.jar。

  2. 建立Forms使用者端API物件

    • 建立 ServiceClientFactory 包含連線屬性的物件。
    • 建立 FormsServiceClient 物件,使用它的建構函式並傳遞 ServiceClientFactory 物件。
  3. 設定HTML執行階段選項

    • 建立 HTMLRenderSpec 物件(使用其建構函式)。
    • 若要使用工具列呈現HTML表單,請叫用 HTMLRenderSpec 物件的 setHTMLToolbar 方法並傳遞 HTMLToolbar 列舉值。 例如,若要顯示垂直HTML工具列,請傳遞 HTMLToolbar.Vertical.
    • 若要設定HTML表單的地區設定值,請叫用 HTMLRenderSpec 物件的 setLocale 方法,並傳遞字串值,以指定地區設定值。 (此為選用設定。)
    • 若要在完整HTML標籤內呈現HTML表單,請叫用 HTMLRenderSpec 物件的 setOutputType 方法與傳遞 OutputType.FullHTMLTags. (此為選用設定。)
    注意

    Forms在HTML中未成功轉譯,當 StandAlone 選項為 trueApplicationWebRoot 會參照裝載AEM Forms之J2EE應用程式伺服器以外的伺服器( ApplicationWebRoot 值是使用 URLSpec 傳遞至的物件 FormsServiceClient 物件的 (Deprecated) renderHTMLForm 方法)。 當 ApplicationWebRoot 是另一部託管AEM Forms的伺服器,管理控制檯中的網頁根URI值需要設定為表單的網頁應用程式URI值。 若要這麼做,請登入管理主控台,按一下「服務> Forms」,然後將Web根URI設為https://server-name:port/FormServer。 然後,儲存您的設定。

  4. 呈現HTML表單

    叫用 FormsServiceClient 物件的 (Deprecated) renderHTMLForm 方法並傳遞下列值:

    • 字串值,指定表單設計名稱,包括副檔名。 如果您參照的表單設計屬於Forms應用程式的一部分,請務必指定完整路徑,例如 Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • A TransformTo 指定HTML偏好設定型別的列舉值。 例如,若要呈現與Internet Explorer 5.0或更新版本的動態HTML相容的HTML表單,請指定 TransformTo.MSDHTML.
    • A com.adobe.idp.Document 包含要與表單合併之資料的物件。 如果您不想合併資料,請傳遞空白字元 com.adobe.idp.Document 物件。
    • HTMLRenderSpec 儲存HTML執行階段選項的物件。
    • 字串值,指定 HTTP_USER_AGENT 標頭值;例如 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322).
    • A URLSpec 儲存轉譯HTML表單所需的URI值的物件。
    • A java.util.HashMap 儲存檔案附件的物件。 此為選用引數,您可以指定 null 如果您不想將檔案附加至表單。

    (Deprecated) renderHTMLForm 方法傳回 FormsResult 包含可寫入使用者端網頁瀏覽器的表單資料流的物件。

  5. 將表單資料流寫入使用者端網頁瀏覽器

    • 建立 com.adobe.idp.Document 物件(透過叫用 FormsResult 物件 getOutputContent 方法。
    • 取得 com.adobe.idp.Document 物件(透過叫用其 getContentType 方法。
    • 設定 javax.servlet.http.HttpServletResponse 物件的內容型別,透過叫用其 setContentType 方法並傳遞的內容型別 com.adobe.idp.Document 物件。
    • 建立 javax.servlet.ServletOutputStream 用來將表單資料流寫入使用者端網頁瀏覽器的物件,方法是叫用 javax.servlet.http.HttpServletResponse 物件的 getOutputStream 方法。
    • 建立 java.io.InputStream 物件(透過叫用 com.adobe.idp.Document 物件的 getInputStream 方法。
    • 建立位元組陣列,並叫用 InputStream 物件的 read 方法,並將位元組陣列作為引數傳遞。
    • 叫用 javax.servlet.ServletOutputStream 物件的 write 將表單資料流傳送至使用者端web瀏覽器的方法。 將位元組陣列傳遞至 write 方法。

另請參閱

將Forms轉譯為HTML

快速入門(SOAP模式):使用Java API轉譯HTML表單

包含AEM Forms Java程式庫檔案

設定連線屬性

使用網站服務API將表單轉譯為HTML

使用Forms API (Web服務)轉譯HTML表單:

  1. 包含專案檔案

    • 建立使用Forms服務WSDL的Java Proxy類別。
    • 將Java Proxy類別納入您的類別路徑中。
  2. 建立Forms使用者端API物件

    建立 FormsService 物件並設定驗證值。

  3. 設定HTML執行階段選項

    • 建立 HTMLRenderSpec 物件(使用其建構函式)。
    • 若要使用工具列呈現HTML表單,請叫用 HTMLRenderSpec 物件的 setHTMLToolbar 方法並傳遞 HTMLToolbar 列舉值。 例如,若要顯示垂直HTML工具列,請傳遞 HTMLToolbar.Vertical.
    • 若要設定HTML表單的地區設定值,請叫用 HTMLRenderSpec 物件的 setLocale 方法,並傳遞字串值,以指定地區設定值。 如需詳細資訊,請參閱 AEM Forms API參考.
    • 若要在完整HTML標籤內呈現HTML表單,請叫用 HTMLRenderSpec 物件的 setOutputType 方法與傳遞 OutputType.FullHTMLTags.
    注意

    Forms在HTML中未成功轉譯,當 StandAlone 選項為 trueApplicationWebRoot 會參照裝載AEM Forms之J2EE應用程式伺服器以外的伺服器( ApplicationWebRoot 值是使用 URLSpec 傳遞至的物件 FormsServiceClient 物件的 (Deprecated) renderHTMLForm 方法)。 當 ApplicationWebRoot 是另一部託管AEM Forms的伺服器,管理控制檯中的網頁根URI值需要設定為表單的網頁應用程式URI值。 若要這麼做,請登入管理主控台,按一下「服務> Forms」,然後將Web根URI設為https://server-name:port/FormServer。 然後,儲存您的設定。

  4. 呈現HTML表單

    叫用 FormsService 物件的 (Deprecated) renderHTMLForm 方法並傳遞下列值:

    • 字串值,指定表單設計名稱,包括副檔名。 如果您參照的表單設計屬於Forms應用程式的一部分,請務必指定完整路徑,例如 Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • A TransformTo 指定HTML偏好設定型別的列舉值。 例如,若要呈現與Internet Explorer 5.0或更新版本的動態HTML相容的HTML表單,請指定 TransformTo.MSDHTML.
    • A BLOB 包含要與表單合併之資料的物件。 如果您不想合併資料,請傳遞 null. (請參閱 使用可流程配置預先填入Forms.)
    • HTMLRenderSpec 儲存HTML執行階段選項的物件。
    • 字串值,指定 HTTP_USER_AGENT 標頭值;例如 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322). 如果您不想設定此值,可以傳遞空字串。
    • A URLSpec 儲存轉譯HTML表單所需的URI值的物件。 (請參閱 指定URI值.)
    • A java.util.HashMap 儲存檔案附件的物件。 此為選用引數,您可以指定 null 如果您不想將檔案附加至表單。 (請參閱 將檔案附加至表單.)
    • 空白 com.adobe.idp.services.holders.BLOBHolder 由方法填入的物件。 此引數值會儲存演算後的表單。
    • 空白 com.adobe.idp.services.holders.BLOBHolder 由方法填入的物件。 此引數會儲存輸出XML資料。
    • 空白 javax.xml.rpc.holders.LongHolder 由方法填入的物件。 此引數會儲存表單中的頁數。
    • 空白 javax.xml.rpc.holders.StringHolder 由方法填入的物件。 此引數將會儲存地區設定值。
    • 空白 javax.xml.rpc.holders.StringHolder 由方法填入的物件。 此引數將會儲存所使用的HTML演算值。
    • 空白 com.adobe.idp.services.holders.FormsResultHolder 將包含此作業結果的物件。

    (Deprecated) renderHTMLForm 方法填入 com.adobe.idp.services.holders.FormsResultHolder 以表單資料流傳遞作為最後一個引數值的物件,必須寫入使用者端Web瀏覽器。

  5. 將表單資料流寫入使用者端網頁瀏覽器

    • 建立 FormResult 物件,方法是取得 com.adobe.idp.services.holders.FormsResultHolder 物件的 value 資料成員。
    • 建立 BLOB 包含表單資料的物件(透過叫用 FormsResult 物件的 getOutputContent 方法。
    • 取得 BLOB 物件(透過叫用其 getContentType 方法。
    • 設定 javax.servlet.http.HttpServletResponse 物件的內容型別,透過叫用其 setContentType 方法並傳遞的內容型別 BLOB 物件。
    • 建立 javax.servlet.ServletOutputStream 用來將表單資料流寫入使用者端網頁瀏覽器的物件,方法是叫用 javax.servlet.http.HttpServletResponse 物件的 getOutputStream 方法。
    • 建立位元組陣列,並透過叫用 BLOB 物件的 getBinaryData 方法。 此任務會指派 FormsResult 物件至位元組陣列。
    • 叫用 javax.servlet.http.HttpServletResponse 物件的 write 將表單資料流傳送至使用者端web瀏覽器的方法。 將位元組陣列傳遞至 write 方法。

另請參閱

將Forms轉譯為HTML

使用Base64編碼叫用AEM Forms

本頁內容