Forms服務可讓您自訂以HTML表單轉譯的工具列。 工具列可以自訂,透過覆寫預設CSS樣式來改變其外觀,並透過覆寫Java指令碼來新增動態行為。 使用名為fscmenu.xml的XML檔案自定義工具欄。 依預設,Forms服務會從內部指定的URI位置擷取此檔案。
此URI位置位於adobe-forms-core.jar檔案中,該檔案位於adobe-forms-dsc.jar檔案中。 adobe-forms-dsc.jar檔案位於C:\Adobe\Adobe_Experience_Manager_forms\ folder (C:\ is the installation directory)。 您可以使用檔案擷取工具(例如Win RAR)來開啟adobe。
您可以從此位置複製fscmenu.xml,修改它以滿足您的要求,然後將它放置在自定義URI位置。 接下來,使用Forms服務API,設定執行時選項,使用指定位置的fscmenu.xml檔案產生Forms服務。 這些動作會導致Forms服務轉譯具有自訂工具列的HTML表單。
除了fscmenu.xml檔案外,您還需要獲取以下檔案:
fscJS是與每個節點相關聯的Java指令碼。 必須為div#fscmenu
節點提供一個,並為ul#fscmenuItem
節點提供可選。 JS檔案實作核心工具列功能,而預設檔案可運作。
fscCSS是與特定節點相關聯的樣式表。 CSS檔案中的樣式指定工具欄外觀。 fscVCSS是垂直工具列的樣式表,會顯示在轉譯的HTML表單的左側。 fscIECSS是用於在Internet Explorer中轉譯之HTML表單的樣式表。
請確定fscmenu.xml檔案中引用了上述所有檔案。 也就是說,在fscmenu.xml檔案中,指定指向這些檔案的URI位置,以便Forms服務能夠找到它們。 預設情況下,這些檔案可在以內部關鍵字FSWebRoot
或ApplicationWebRoot
開頭的URI位置中使用。
若要自訂工具列,請使用外部關鍵字FSToolBarURI
取代關鍵字。 此關鍵字代表在執行時傳遞至Forms服務的URI(此方法將在本節稍後顯示)。
您也可以指定這些JS和CSS檔案的絕對位置,例如https://www.mycompany.com/scripts/misc/fscmenu.js。 在此情況下,您不需要使用FSToolBarURI
關鍵字。
不建議您混合參照這些檔案的方式。 也就是說,應使用FSToolBarURI
關鍵字或絕對位置來引用所有URI。
您可以開啟adobe-forms-<appserver>.ear檔案,以取得JS和CSS檔案。 在此檔案中,開啟adobe-forms-res.war。 所有這些檔案都位於WAR檔案中。 adobe-forms-<appserver>.ear檔案位於AEM Forms安裝資料夾(C:\ is the installation directory)中。 您可以使用檔案擷取工具(例如WinRAR)開啟adobe-forms-<appserver>.ear。
以下XML語法顯示了fscmenu.xml檔案的示例。
<div id="fscmenu" fscJS="FSToolBarURI/scripts/fscmenu.js" fscCSS="FSToolBarURI/fscmenu.css" fscVCSS="FSToolBarURI/fscmenu-v.css" fscIECSS="FSToolBarURI/fscmenu-ie.css">
<ul class="fscmenuItem" id="Home">
<li>
<a href="#" fscTarget="_top" tabindex="1">Home</a>
</li>
</ul>
<ul class="fscmenuItem" id="Upload" fscJS="FSToolBarURI/scripts/fscattachments.js" fscCSS="FSToolBarURI/fscdialog.css">
<li>
<a tabindex="2">Upload Attachments</a>
<ul class="fscmenuPopup" id="fscUploadAttachments">
<li>
<a href="javascript:doUploadDialog();" tabindex="3">Add ...</a>
</li>
<li>
<a href="javascript:doDeleteDialog();" tabindex="4">Delete ...</a>
</li>
</ul>
</li>
</ul>
<ul class="fscmenuItem" id="Download">
<li>
<a tabindex="100">Download Attachments</a>
<ul class="fscmenuPopup">
<li>
<a tabindex="101">None available</a>
</li>
</ul>
</li>
</ul>
</div>
粗體文字代表必須參考的CSS和JS檔案的URI。
下列項目說明如何自訂工具列:
fscJS
、fscCSS
、fscVCSS
、fscIECSS
屬性的值(在fscmenu.xml檔案中),以使用本節中描述的方法之一(例如fscJS="FSToolBarURI/scripts/fscmenu.js"
)來反映引用檔案的自定義位置。div#fscmenu
節點需要的JS和CSS檔案是工具列功能的必要項。 個別ul#fscmenuItem
節點可能或不具有支援的JS或CSS檔案。變更本機值
在自定義工具欄時,可以更改工具欄的區域設定值。 也就是說,你可以用另一種語言來顯示。 下圖顯示以法文顯示的自訂工具列。
無法以多種語言建立自訂工具列。 工具欄不能根據區域設定使用不同的XML檔案。
要更改工具欄的區域設定值,請確保fscmenu.xml檔案包含要顯示的語言。 以下XML語法顯示用於顯示法文工具欄的fscmenu.xml檔案。
<div id="fscmenu" fscJS="FSToolBarURI/scripts/fscmenu.js" fscCSS="FSToolBarURI/fscmenu.css" fscVCSS="FSToolBarURI/fscmenu-v.css" fscIECSS="FSToolBarURI/fscmenu-ie.css">
<ul class="fscmenuItem" id="Home">
<li>
<a href="#" fscTarget="_top" tabindex="1">Accueil</a>
</li>
</ul>
<ul class="fscmenuItem" id="Upload" fscJS="FSToolBarURI/scripts/fscattachments.js" fscCSS="FSToolBarURI/fscdialog.css">
<li>
<a tabindex="2">Télécharger les pièces jointes</a>
<ul class="fscmenuPopup" id="fscUploadAttachments">
<li>
<a href="javascript:doUploadDialog();" tabindex="3">Ajouter...</a>
</li>
<li>
<a href="javascript:doDeleteDialog();" tabindex="4">Supprimer...</a>
</li>
</ul>
</li>
</ul>
<ul class="fscmenuItem" id="Download">
<li>
<a tabindex="100">Télécharger les pièces jointes</a>
<ul class="fscmenuPopup">
<li>
<a tabindex="101">Aucune disponible</a>
</li>
</ul>
</li>
</ul>
</div>
與此部分關聯的快速入門使用此XML檔案顯示法文自定義工具欄,如上圖所示。
另外,通過調用HTMLRenderSpec
對象的setLocale
方法並傳遞指定區域設定值的字串值來指定有效的區域設定值。 例如,傳遞fr_FR
以指定法文。 Forms服務與本地化工具列搭配。
呈現使用自訂工具列的HTML表單之前,您必須知道HTML表單的呈現方式。 (請參閱將Forms呈現為HTML。)
如需Forms服務的詳細資訊,請參閱AEM Forms的服務參考。
要呈現包含自定義工具欄的HTML表單,請執行以下任務:
包含項目檔案
在您的開發專案中加入必要的檔案。 如果您是使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用Web服務,請包含代理檔案。
建立Forms Java API物件
您必須先建立Forms用戶端物件,才能以程式設計方式執行Forms服務支援的操作。
參考自定義fscmenu XML檔案
要呈現包含自定義工具欄的HTML表單,請參考描述該工具欄的fscmenu XML檔案。 (本節提供fscmenu XML檔案的兩個示例。) 另外,請確保fscmenu.xml檔案正確指定所有引用檔案的位置。 如本節前面所述,請確定所有檔案均被FSToolBarURI
關鍵字或其絕對位置引用。
轉譯HTML表單
要呈現HTML表單,請指定在Designer中建立並另存為XDP檔案的表單設計。 也選取HTML轉換類型。 例如,您可以指定HTML轉換類型,為Internet Explorer 5.0或更新版本轉譯動態HTML。
呈現HTML表單還需要URI值等值,才能呈現其他表單類型。
將表單資料流寫入客戶端Web瀏覽器
Forms服務轉譯HTML表單時,會傳回表單資料流,您必須將此資料流寫入用戶端網頁瀏覽器,才能讓使用者看到HTML表單。
另請參閱
使用Forms服務API(Java)轉譯包含自訂工具列的HTML表單:
包含項目檔案
在Java專案的類別路徑中加入用戶端JAR檔案,例如adobe-forms-client.jar。
建立Forms Java API物件
ServiceClientFactory
對象。ServiceClientFactory
物件,以建立FormsServiceClient
物件。參考自定義fscmenu XML檔案
HTMLRenderSpec
物件。HTMLRenderSpec
物件的setHTMLToolbar
方法,並傳遞HTMLToolbar
列舉值。 例如,要顯示垂直HTML工具欄,請傳遞HTMLToolbar.Vertical
。HTMLRenderSpec
對象的setToolbarURI
方法並傳遞指定XML檔案的URI位置的字串值,指定fscmenu XML檔案的位置。HTMLRenderSpec
對象的setLocale
方法並傳遞指定區域設定值的字串值來設定區域設定值。 預設值為英文。與此部分關聯的快速入門將此值設定為fr_FR
。
轉譯HTML表單
調用FormsServiceClient
對象的renderHTMLForm
方法並傳遞以下值:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
。TransformTo
枚舉值。 例如,要呈現與Internet Explorer 5.0或更高版本的動態HTML相容的HTML表單,請指定TransformTo.MSDHTML
。com.adobe.idp.Document
物件,包含要與表單合併的資料。 如果您不想合併資料,請傳遞空白的com.adobe.idp.Document
物件。HTMLRenderSpec
對象。HTTP_USER_AGENT
標題值(如Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
)的字串值。URLSpec
物件,用於儲存呈現HTML表單所需的URI值。java.util.HashMap
對象。 這是可選參數,如果不想將檔案附加到表單,可以指定null
。renderHTMLForm
方法返回一個FormsResult
對象,該對象包含必須寫入客戶端Web瀏覽器的表單資料流。
將表單資料流寫入客戶端Web瀏覽器
FormsResult
對象s getOutputContent
方法,建立com.adobe.idp.Document
對象。getContentType
方法,獲取com.adobe.idp.Document
對象的內容類型。setContentType
方法並傳遞com.adobe.idp.Document
對象的內容類型來設定javax.servlet.http.HttpServletResponse
對象的內容類型。javax.servlet.http.HttpServletResponse
對象的getOutputStream
方法,建立用於將表單資料流寫入客戶端Web瀏覽器的javax.servlet.ServletOutputStream
對象。com.adobe.idp.Document
對象的getInputStream
方法,建立java.io.InputStream
對象。InputStream
物件的read
方法,並將位元組陣列傳遞為引數,借此建立位元組陣列,並填入表單資料流。javax.servlet.ServletOutputStream
對象的write
方法,將表單資料流發送到客戶端Web瀏覽器。 將位元組陣列傳遞至write
方法。另請參閱
快速入門(SOAP模式):使用Java API使用自訂工具列轉譯HTML表單
使用Forms服務API(網站服務)轉譯包含自訂工具列的HTML表單:
包含項目檔案
建立Forms Java API物件
建立FormsService
物件並設定驗證值。
參考自定義fscmenu XML檔案
HTMLRenderSpec
物件。HTMLRenderSpec
物件的setHTMLToolbar
方法,並傳遞HTMLToolbar
列舉值。 例如,要顯示垂直HTML工具欄,請傳遞HTMLToolbar.Vertical
。HTMLRenderSpec
對象的setToolbarURI
方法並傳遞指定XML檔案的URI位置的字串值,指定fscmenu XML檔案的位置。HTMLRenderSpec
對象的setLocale
方法並傳遞指定區域設定值的字串值來設定區域設定值。 預設值為英文。與此部分關聯的快速入門將此值設定為fr_FR
。
轉譯HTML表單
調用FormsService
對象的renderHTMLForm
方法並傳遞以下值:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
。TransformTo
枚舉值。 例如,要呈現與Internet Explorer 5.0或更高版本的動態HTML相容的HTML表單,請指定TransformTo.MSDHTML
。BLOB
物件,包含要與表單合併的資料。 如果您不想合併資料,請傳遞null
。HTMLRenderSpec
對象。HTTP_USER_AGENT
標題值(如Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322
)的字串值。 如果您不想設定此值,可以傳遞空白字串。URLSpec
物件,用於儲存呈現HTML表單所需的URI值。java.util.HashMap
對象。 此參數為可選參數,如果不想將檔案附加到表單,則可以指定null
。renderHTMLForm
方法填入的空com.adobe.idp.services.holders.BLOBHolder
物件。 此參數值儲存呈現的表單。renderHTMLForm
方法填入的空com.adobe.idp.services.holders.BLOBHolder
物件。 此參數儲存輸出XML資料。renderHTMLForm
方法填入的空javax.xml.rpc.holders.LongHolder
物件。 此引數會儲存表單中的頁數。renderHTMLForm
方法填入的空javax.xml.rpc.holders.StringHolder
物件。 此參數儲存地區設定值。renderHTMLForm
方法填入的空javax.xml.rpc.holders.StringHolder
物件。 此引數會儲存所使用的HTML呈現值。com.adobe.idp.services.holders.FormsResultHolder
對象。renderHTMLForm
方法會以必須寫入用戶端網頁瀏覽器的表單資料流填入作為最後一個引數值傳遞的com.adobe.idp.services.holders.FormsResultHolder
物件。
將表單資料流寫入客戶端Web瀏覽器
com.adobe.idp.services.holders.FormsResultHolder
對象的value
資料成員的值,以建立FormResult
對象。FormsResult
對象的getOutputContent
方法,建立包含表單資料的BLOB
對象。getContentType
方法,獲取BLOB
對象的內容類型。setContentType
方法並傳遞BLOB
對象的內容類型來設定javax.servlet.http.HttpServletResponse
對象的內容類型。javax.servlet.http.HttpServletResponse
對象的getOutputStream
方法,建立用於將表單資料流寫入客戶端Web瀏覽器的javax.servlet.ServletOutputStream
對象。BLOB
對象的getBinaryData
方法來填入。 此任務將FormsResult
對象的內容分配給位元組陣列。javax.servlet.http.HttpServletResponse
對象的write
方法,將表單資料流發送到客戶端Web瀏覽器。 將位元組陣列傳遞至write
方法。另請參閱