JSF 引擎配置參數

WebSphere® Application Server中,您可以在正式作業伺服器環境和開發環境中配置 JavaServer Faces (JSF) 引擎配置參數,以取得最佳效能。

JSF 引擎參數區分大小寫。 如果參數的指定值由兩個或更多用空格區隔的單字組成,您必須用引號將值括起來。

MyFaces 的 JSF 選項

表 1. MyFaces 的 JSF 選項。 下表顯示 JSF 參數名稱、說明及預設值:
JSF 參數名稱 說明 預設值
org.apache.myfaces.DETECT_JAVASCRIPT   false
org.apache.myfaces.AUTO_SCROLL 如果是 true,會對每個要求呈現 JavaScript 函數來還原先前的垂直捲動。 如果頁面中有很長的清單,當您觸發同一頁的鏈結或按鈕動作時,如果不希望瀏覽器頁面跳回頁面開頭,這項特性會很方便。 false
org.apache.myfaces.ADD_RESOURCE_CLASS   org.apache.myfaces.renderkit.html.util.DefaultAddResource
org.apache.myfaces.CHECK_EXTENSIONS_FILTER 這個參數會檢查是否已適當配置 Web 應用程式所需的 Extensions-Filter。 True
org.apache.myfaces.COMPRESS_STATE_IN_SESSION 將這個選項設為 true 可在序列化狀態寫入階段作業之前先壓縮狀態。 如果這個選項設為 false,則不會壓縮狀態。 只有在狀態儲存方法設為伺服器,且 org.apache.myfaces.SERIALIZE_STATE_IN_SESSION 設為 true時,這個選項才適用。 True
org.apache.myfaces.FLASH_SCOPE_DISABLED 將此環境定義參數設為 true ,以停用導致未傳送 Cookie 的 Flash Scope。 false
org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION 定義階段作業中儲存的最新視圖數。 只有當狀態儲存方法設為 server 時,這個選項才適用。 20
org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS   True
org.apache.myfaces.SERIALIZE_STATE_IN_SESSION 將這個選項設為 true 可在狀態寫入階段作業之前,先將狀態序列化為位元組串流。 如果這個選項設為 false,則不會將狀態序列化為位元組串流。 只有當狀態儲存方法設為 server 時,這個選項才適用。 True
org.apache.myfaces.STRICT_JSF_2_CC_EL_RESOLVER 確定當在來源 EL 表示式上呼叫 getType () 時,使用鏈結式 EL 表示式的元件可以使用 composite: attribute 所新增的 meta 資料資訊。 將這個內容設為 true 可停用這項功能。 false
org.apache.el.parser.COERCE_TO_ZERO 指定 WebSphere Application Server 所用的「表示式語言 (EL)」實作是否將空值和空字串整數值強制設為 0 值。  預設值為 false -因此空值及空字串整數將不會強制轉型為 0 值。

由於 EL 3.0 規格的變更,此參數的預設值已從先前 WebSphere 版本中的預設值變更。

您可以使用管理主控台來設定 org.apache.el.parser.COERCE_TO_ZERO 內容:

  1. 展開伺服器,然後選取 WebSphere 應用程式伺服器。 從清單中按一下適當的伺服器。
  2. 在伺服器基礎架構下,展開 Java 和程序管理> 按一下程序定義。
  3. 在「其他內容」下,按一下「Java 虛擬機器」。
  4. 在「其他內容」下,按一下「自訂內容」。
  5. 如果您想要將空值強制型轉為零,請按一下 新建 ,並新增 org.apache.el.parser.COERCE_TO_ZERO 內容與 true 值。
  6. 按一下儲存來儲存變更,然後重新啟動 WebSphere Application Server,以確保變更生效。
 
org.apache.myfaces.DEBUG_PHASE_LISTENER 在開發專案階段中啟用 DebugPhaseListener True
com.ibm.ws.jsf.disablealternatefacesconfigsearch 僅針對設定此環境定義參數的 Web 應用程式停用 MyFaces 搜尋 META-INF/*.faces-config.xml 。 如果同時設定環境定義參數和 Web 儲存器自訂內容,則以環境定義參數為優先。 false
com.ibm.ws.jsf.get.facesConfig.via.WAS.classloader (JVM 內容) 當應用程式類別載入器模式設為 PARENT_LAST時,應用程式組合的 commons-logging 實作 (例如 Log4J ) 可能會與 WebSphere 提供的 commons-logging 實作衝突。  當應用程式類別載入器模式設為 PARENT_LAST時,請將這個 JVM 內容設為 true ,以啟用正確的類別載入行為。 false

一般 JSF 選項

表 2. JSF 選項 下表顯示任何 JSF 實作的 JSF 參數名稱、說明及預設值:
JSF 參數名稱 說明 預設值
javax.faces.STATE_SAVING_METHOD 指定儲存狀態資訊的位置。 有效值為 server(儲存在 HttpSession 中) 和 client(在表單中儲存為隱藏欄位)。
附註: 如果您使用 javax.faces.STATE_SAVING_METHOD 在用戶端儲存,「JavaServer Pages 標準標籤庫 (JSTL)」與 Facelets 之間會有一些限制。 對於某些處理實務, JSF Facelets 支援在處理 Facelets 的所有用戶端儲存需求時有一些限制。 對於這些實務範例,伺服器端儲存是一個選項。 如果需要儲存用戶端狀態,請使用 JSF 標籤。
伺服器
javax.faces.CONFIG_FILES 請利用這個參數來指定環境定義相關資源路徑的逗點定界清單, JSF 實作會在其中尋找應用程式配置資源,然後再載入名稱為 /WEB-INF/facesconfig.xml的配置資源 (如果有資源的話)。
javax.faces.DEFAULT_SUFFIX 指定包含 JSF 元件的延伸對映資源的預設字尾。 .jsp
javax.faces.LIFECYCLE_ID 請利用這個參數來配置替代生命週期 ID。
com.ibm.ws.jsf.JSF_IMPL_CHECK 指定當應用程式重新啟動時必須重新編譯 Web 模組中的 JSP 檔,因為使用的 JSP 實作已變更。 應用程式重新啟動之後,下次存取這個模組的一個 JSP 檔時,將會根據管理主控台指定的選定 JSP 實作來重新編譯此 JSP 檔。 後續再呼叫該 JSP 檔時不會重新編譯。 這個選項的預設值為 false。 這個選項適用於開發環境,而非正式作業環境。
javax.faces.EMPTY_STRING_SUBMITTED_VALUES_AS_NULL 指定將提交的值解碼為空值,而不是空字串。
附註: 對於從 UISelectOne/UISelectMany延伸的元件,會忽略此參數。
附註: 當使用 EL 3.0 或更新版本時,此參數沒有作用,因為需要自訂 ELResolver
false

在 MyFaces 中有同等行為的 Sun RI 環境定義參數

表 3. Sun RI 環境定義參數和同等的 MyFaces 行為 下表顯示 SUN RI 參數名稱和 MyFaces 同等參數名稱:
SUN RI 參數名稱 說明 RI 預設值 MyFaces 同等參數名稱 MyFaces 預設值
com.sun.faces.numberOfViewsInSession 定義儲存在階段作業中的序列化視圖數目上限。 與伺服器狀態儲存一起使用。 15 org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION 20
com.sun.faces.compressViewState 設為 true 時,視圖在序列化之後和進行 base64 編碼之前會壓縮。 與用戶端狀態儲存一起使用。 從 1.2_09 開始,當 com.sun.faces.serializeServerState 設為 true 時,這個選項也會影響伺服器端狀態儲存 (當您使用這個選項時,這會對階段作業中的狀態大小產生很大影響,但會耗用更多 CPU)。 True 用戶端狀態儲存的 org.apache.myfaces.COMPRESS_STATE_IN_CLIENT,或伺服器端狀態儲存的 org.apache.myfaces.COMPRESS_STATE_IN_SESSION false 表示用戶端狀態儲存,true 表示伺服器端狀態儲存
com.sun.faces.validateXml 設為 true 時,JSF 會驗證配置檔。 false org.apache.myfaces.VALIDATE false
com.sun.faces.injectionProvider 這個參數指定用於實作 InjectionProvider 的類別。 WebSphere Application Server 執行時期提供注入提供者
com.sun.faces.serializationProvider 這個參數指定用於實作 SerializationProvider SPI 的類別。 這個實作代表 JSF 實作用於啟用替代序列化實作的連結鉤。 org.apache.myfaces.SERIAL_FACTORY - 類別必須實作 org.apache.myfaces.shared_impl.util.serial.SerialFactory SPI,而不是 com.sun.faces.spi.SerializationProvider
com.sun.faces.enabledJSStyleHiding 如果為 true,HTML ResponseWriter 實作所呈現的行內 JavaScript 會呈現,因而舊版瀏覽器實作看不到 Script。 false org.apache.myfaces.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG True
com.sun.faces.serializeServerState 如果啟用,元件狀態(而非樹狀結構)在儲存到階段作業中之前會序列化。 如果應用程式的問題在於視圖狀態易受模型變更所影響,這可能就很適合。 false org.apache.myfaces.SERIALIZE_STATE_IN_SESSION True
對於轉移使用者: 8.5.5.3 版之前,當您使用 javax.faces.component.UIComponent.findComponent (字串表示式) 時,可能會傳回不正確的 UIComponent。 在此產品版本中, javax.faces.component.UIComponent.findComponent 會傳回正確的 UIComponent。 com.ibm.ws.jsf.FIND_COMPONENT_RECURSE_CHILD_ID JSF 環境定義參數必須設為 true