© Copyright International Business Machines Corporation 2006. All rights reserved.US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM® Corp.
下列已淘汰,不建議再使用:
- 用戶端資料及相關的工具(例如「用戶端資料」視圖)
- Faces 用戶端元件
<odc:dataGrid>
(資料方格)<odc:webService>
(Web 服務)<odc:clientData>
<odc:clientBinder>
樹狀結構
<odc:tree>
和圖表<odc:graphDraw>
已可使用「伺服器資料」。
如果您匯入第 7 版前的 JSF 應用程式,但未移轉 JSF JAR,然後繼續開發應用程式,則第 7 版新增的標籤不會納入專案 JAR 中,也無法在執行時期使用。請記得移轉第 7 版前的 JAR。
當「樹狀結構」控制項連結 SDO 資料或 WDO 資料時,
<odc:treeNodeAttr>
標籤的 className 屬性中會使用不同的值。將專案從使用 WDO 的伺服器(例如 WebSphere® Application Server 5.1)移轉至使用 SDO 的伺服器時(例如 WebSphere Application Server 6.1),解決此問題最簡單的方法是先刪除再重建所有的「樹狀結構」控制項。
在 6.0 版中,如果
<hx:commandExButton>
將類型設為 Submit,且有一個標籤和單一背景圖形(例如,value="submit" image="button.gif"
),則只會呈現圖形(不會同時呈現圖形和標籤)。7.0 版已修正這個問題。修正程式指出具有一個標籤和單一背景圖形的按鈕在 7.0 版和原來的 6.0 版中各有不同的呈現方式。同樣地,如果
<hx:commandExButton>
將類型設為Reset
,且有單一背景圖形(或一個背景圖形和一個標籤),則只會呈現圖形,且按鈕會視為提交按鈕(忽略按鈕的類型)。7.0 版已修正這個問題。修正程式指出類型設為Reset
的按鈕現在會重設頁面,不會提交頁面。
無法再使用
<jspPanel>
標籤屬性style
和styleClass
。這些屬性不會用來呈現 JSP 畫面元件。如果匯入舊版產品中建立的 JSF 應用程式,
<jspPanel>
標籤會顯示錯誤。為了解決錯誤,請在「程式碼」視圖中編輯 JSP 程式檔,從專案的所有<jspPanel>
標籤中移除style
和styleClass
屬性。
如果將舊版產品所建立的專案匯入工作區,可能會蹦現對話框,指出已安裝 Faces 支援,但未選取專案的目標執行時期。在某些情況下,這個警告不正確,在移轉程序完成之後將會正確地定義執行時期。若要檢查是否已設定執行時期,請用滑鼠右鍵按一下專案 > 內容,然後選取目標執行時期。如果任何已定義的伺服器旁邊出現勾選框,則不需要進一步的動作,否則請選取其中一個伺服器。
附註:如果從相同的頁面資料節點,或同名的頁面資料節點,來建立用戶端資料模型,則不需要此暫行解決方法。
在 7.0 版中,當頁面上有多個要從相同的 Bean 類別建立的用戶端資料模型時,則在產生(或重新產生)第二個模型時,會錯誤地建立第二個 ecore 和 emap 檔案。根據移轉手冊,在移轉用戶端資料專案時,應該重新產生用戶端資料模型,因此,如果移轉的專案頁面含有多個用戶端資料模型,則會受到影響。下列是一種簡單的情況:
- 根據 java.util.Date Bean 來建立兩個頁面資料,例如 myDate1 和 myDate2。
- 對於每一個頁面資料,依序建立同名的用戶端資料模型:myDate1、myDate2
暫行解決方法:若要讓頁面可以同時使用這兩種模型, 請從 com.ibm.dynwdo4jsmediators 套件中刪除 myDate2.ecore 和 myDate2.emap,並 在 OdysseyBrowserFramework.properties 檔案中刪除相對應的項目。
「用戶端資料」會將大量 JavaScript™ 輸出至頁面上。在舊版中,JavaScript 不編碼。這表示如果在多個 Portlet 中使用「用戶端資料」,且使用相同的頁面資料來源,則所有 Portlet 輸出至頁面的 JavaScript 都相同。
這項行為(兩個 Portlet 連結至「用戶端資料」)可能連結至相同的「用戶端資料」物件(因為第二段 JavaScript 會改寫第一段)。這反而可讓兩個 Portlet 依次互動,任一 Portlet 的變更會反映在兩者之上。
如果您在一個頁面上要有多個 Portlet,且使用的「用戶端資料」彼此無關,則會有問題。如果同一頁面上有兩個使用「用戶端資料」但不同「頁面資料」來源的 Portlet,將發生 JavaScript 錯誤。這也會導致其中一個 Portlet 無法呈現。
若要修正這些問題並讓「用戶端資料」Portlet 可以在 WSRP 上執行,「用戶端資料」JavaScript 變數必須編碼,成為每一個 Portlet 中唯一的變數。如此一來,「用戶端資料」JavaScript 區段就能彼此獨立運作。
在 7.0 版中,所有用戶端資料都會編碼。
如果要在頁面上的 Portlet 之間共用「用戶端資料」,您必須使用下列環境定義參數來更新 web.xml:
<context-param>
<param-name>com.ibm.faces.ENCODE_DATA</param-name>
<param-value>false</param-value>
<description></description>
</context-param>將 <param-value> 設為 false 會移除「用戶端資料」編碼。
使用 Encode_Data 參數和它在使用「頁面資料」的「圖表」和「資料樹狀結構」元件上的效果
「圖表」和「資料樹狀結構」經由在頁面上放置 XML 資料物件來使用頁面資料。「圖表」和「資料樹狀結構」的「頁面資料」緊密連結至這些元件的「用戶端資料」。此資料依預設會編碼。如果在 web.xml 檔案中設定下列的 <context-param>(通常用來移除「用戶端資料」編碼),則也會移除「圖表」和「資料樹狀結構」的「頁面資料」編碼。其他使用頁面資料的元件不受影響。讓頁面資料維持不要編碼,表示在頁面上有兩個 Portlet,且兩者都有圖表或資料樹狀結構,則可能會有問題。這些錯誤包括 JavaScript 錯誤及(或)其中一個 Portlet 無法正常顯示。
為了讓「用戶端資料」將這項資料編碼,讓頁面上的兩個 Portlet 彼此獨立運作並且啟用 WSRP 支援,您必須從 web.xml 中移除下列 <context-param>,或將 <param-value> 設為 true:
<context-param>
<param-name>com.ibm.faces.ENCODE_DATA</param-name>
<param-value>true</param-value>
<description></description>
</context-param>
下列程式碼置於頁面頂端:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
這導致 Web 瀏覽器進入標準模式。在標準模式下,
HTML
和body
元素會貼齊內容,不會像模糊模式(預設 HTML 模式)一樣填滿視窗。當標籤式面板直接置於頁面上且將高度設為百分比時,將造成面板高度的呈現發生問題。
若要修正這個狀況,請將標籤式面板放在已設定高度的儲存器中,或將頁面頂端的 doctype 變更為:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
當 doctype 設定如下時,標準模式下的標籤會有顯示問題:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
只要改為下列 doctype 就可以更正:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
當日曆類型設為阿拉伯文時,
<hx:convertDateTime>
標籤無法產生正確的 JavaScript。因此,用戶端驗證、輸入提示、日期挑選器說明程式及小型日曆無法正常運作。當產生的 JavaScript 起始設定時,畫面上會顯示錯誤(或元件無法正常運作)。暫行解決方法:請勿啟用用戶端驗證或提示。如果轉換器使用阿拉伯文日曆,請勿啟用日期挑選器 Helper。
選取目標 WebSphere® 伺服器執行時期時,請記得為 Web 專案選取 WebSphere Web(共存性)Poject Facet。
暫行解決方法:在建立專案時,在「動態 Web 專案」精靈的第二頁選取 Facet,如果專案已存在,則透過專案「內容」對話框的 Project Facet 頁面來選取。建立以 WebSphere 伺服器為目標的 Web 專案時,如果在專案精靈的第一頁從「配置」下拉清單中選取「Faces 專案」或「使用 XDoclet 的動態 Web 專案」,並不會自動選取 WebSphere Web(共存性)Facet。您可以繼續到精靈的下一頁來選取此 Facet。如果從「配置」清單中選取 <自訂>,則選取目標 WebSphere 執行時期時會適當地選取 Facet。
在
<hx:dataTableEx>
內使用<hx:columnEx>
且已啟用垂直捲動時(設定 scrollSize), 如果表格中有一或多個直欄將寬度設為百分比型寬度,且瀏覽器將頁面的 doctype 解譯成 W3C 標準(相對於 W3C 轉移),則在呈現的表格中,直欄標頭和直欄內容不會彼此對齊。 比方說,如果 doctype 包含loose.dtd
宣告,則會發生這種情形。
暫行解決方法:固定直欄寬度(不根據百分比),或確定 doctype 會解析成transitional
doctype(例如,移除 loose.dtd 宣告)。
在
<hx:panelDialog>
中,如果定位(水平或垂直)設為relative
,且作為定位基點的標籤(決定對話框相對位置的標籤)所在的頁面會捲動來顯示標籤且頁面不會捲動至頂端,則顯示對話框時,位置可能不正確(通常是離頂端或左邊太遠)。暫行解決方法:如果需要相對定位,請確定基點標籤靠近頁面頂端。不然就使用其他的定位類型。
如果資料表(
<h:dataTable>
或<hx:dataTableEx>
)在已啟用 AJAX 的畫面中,且已啟用列選擇功能(表格中包含<hx:inputRowSelect>
),則透過 AJAX 來重新提取表格時,選擇直欄中的勾選框無法正常運作。只有在第一次呈現時可以正常運作。暫行解決方法:這個問題目前沒有暫行解決方法。請勿將表格放入已啟用 AJAX 的畫面中。
如果目標頁面中用來指定擷取的畫面 ID 的 source 屬性不同於來源頁面中附加
<hx:ajaxExternalRequest>
的畫面 ID,則<hx:ajaxExternalRequest>
可能無法在 Internet Explorer (IE) 中正常運作。 例如,<hx:panel id="panel1"><hx:ajaxExternalRequest source="panel999" /><hx:panel>
。此問題只發生在 IE 中,且只有當目標畫面是方格、方框或版面配置(呈現為 HTML 表格的畫面)時才會發生。暫行解決方法:請確定 ID 都相同,或將目標畫面放在 panelGroup 內。
<hx:ajaxRefreshRequest>
、<hx:ajaxRefreshSubmit>
、<hx:ajaxExternalRequest>
及<hx:inputHelperTypeahead>
的inProgresss
屬性沒有作用。設定此屬性的值沒有作用。為了確保與未來版本的相容性,請不要設定此值。
當
<hx:inputHelperTypeahead>
附加至輸入欄位時,如果在欄位中輸入空格字元及(或)標點字元,例如 & 符號和百分比,則建構的建議清單中不會有包含這些字元的任何「相符項」。比方說,如果使用者鍵入 %,則不會傳回相符項,即使在使用的「字典」中有 % 開頭的字也一樣。
從 Firefox 1.5.0.8 版開始,部分 HTML DOM 屬性行為的變更可能導致
panelDialog
在 Firefox 中呈現的位置不正確。對話框採用相對定位時最容易發生這個問題,但在其他情況下也會發生,例如主文內容的大小「小於」瀏覽器視窗的高度(亦即,頁面不垂直捲動時)。暫行解決方法:在主文中加入內容(即使是空格,例如設定高度的 <div>),保持頁面上顯示垂直捲軸,或許可以解決問題(視瀏覽器視窗和內容的確切大小而定)。
如果 styleClass 不是設為預設類別
pagerDeluxe
,則<hx:pagerDeluxe>
不會呈現正確的 HTML 標記。分頁器的按鈕一律會以預設類別名稱來呈現。暫行解決方法:
- 請勿將類別名稱改為 pagerDeluxe 以外的設定。
- 如果使用不同的類別名稱,請考量按鈕上呈現的類別名稱來調整使用的 CSS。