在 JSP 檔之間傳遞參數

您可以利用下列兩種方法來傳遞要求參數:
  • param
  • requestScope
param 對映包含在 URL 中傳遞的參數,或從另一頁面的 HTML 表單中傳遞的參數。 如果要在目標頁面內參照要求參數:
${param.P}
其中 P 是參數。

因為 param 對映是唯讀的,因此,如果用來作為 UIInput 類型元件的值,會使 JavaServer Faces 生命週期的 updateModel 階段失敗。 因此,由於這些動作從未執行,所以表單看起來呈毀損狀;這是一個已知的問題。 因此,param 對映應該只用於輸出元件。 解決此問題的方法之一是在 Faces JSP 頁面的頁面程式碼檔案中定義變數。 然後,產生它的 getter 和 setter。在它的 getter 方法中,將它起始設定(如果它是 Null)為 resolveExpression("#{param.xyz})。 然後,建立輸入元件,並將它連結到頁面內容。

在 URL 中,看不到要求範圍參數。 如果要傳遞這個參數,請在原始頁面中建立「指令 - 按鈕」或「指令 - 超鏈結」。 在「快速編輯」視圖中,利用下列程式碼來設定要求範圍中的參數:
requestScope.put("P", "some value");

您可以透過 #{requestScope.P} 的值參照目標頁面。您可以對輸入和輸出元件使用要求範圍。

顧名思義,requestScope 中的 ParametersValues 不具持續性。 這會造成問題,尤其如果在 requestScope 參數上過濾關聯式記錄清單成為支援分頁的資料表,更是如此。 分頁動作會起始一項送出,這時參數會超出範圍。 如果要解決這個問題,請建立以參數作為值的隱藏輸入欄位。 這個方法不適用於含有多份表單的頁面(包括 Portlet),其表單將傳回至相同頁面。在這個情況下,請考慮參數(建議)或關聯式記錄清單(不建議)的其他範圍。

相關概念
JavaServer Faces
相關工作
建立 Faces 應用程式 - 概觀
建立 Faces JSP 檔
相關參考
Faces 元件參照
Faces 元件的屬性
使用條款 | 讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.