クラス Flash
- java.lang.ObjectSE
-
- jakarta.faces.context.Flash
- 既知の直属サブクラス
FlashWrapper
public abstract class Flash extends ObjectSE implements MapSE<StringSE,ObjectSE>
フラッシュのコンセプトは Rails に Ruby から取られ、顔のライフサイクルによって生成されたユーザビュー間の一時的なオブジェクトを渡す方法を提供しています。Rails の場合と同様に、フラッシュ内の 1 つの場所はすべて、同じユーザーセッションが遭遇する次のビューに公開され、その後クリアされます。「次のビュー」は、前のビューと同じビュー ID を持つ場合があることに注意することが重要です。
実装要件
フラッシュは、スレッドセーフである必要があるセッションスコープのオブジェクトです。
実装要件は、Jakarta Faces ライフサイクルを横断するランタイムの観点から説明されます。フラッシュは、2 つの論理マップで
Mapインターフェースを公開します。どの論理マップにアクセスするかの選択は、現在のフェイスのライフサイクルフェーズによって異なります。1 つの論理マップは現在のトラバーサル用で、もう 1 つは次のトラバーサル用です。ライフサイクルの実行部分では、すべてのフラッシュアクセスが現在のトラバーサルマップに送信されます。ライフサイクルのレンダリング部分では、すべてのフラッシュアクセスが次のトラバーサルマップに送信されます。ライフサイクルの次のトラバーサルでは、実装は、現在のトラバーサルマップが前のトラバーサルの次のトラバーサルマップであることを確認する必要があります。これは、説明のみを目的とした例です。Faces ライフサイクルへの最初のリクエストを検討する
トラバーサル N、実行フェーズ: 最初のリクエストではスキップされました。
トラバーサル N、レンダリングフェーズ: フラッシュアクセスはフラッシュ [N] に移動します。
トラバーサル N + 1、実行フェーズ: フラッシュアクセスはフラッシュ [N] に移動します。
トラバーサル N + 1、レンダリングフェーズ: フラッシュアクセスはフラッシュ [N + 1] に移動します。
実装では、
<redirect />を含む<navigation-case>の場合でも、フラッシュの適切な動作が保持されるようにする必要があります。実装は、同じセッションで隣接する GET リクエストの場合でも、フラッシュの適切な動作が保持されることを保証する必要があります。これにより、Faces アプリケーションは "Post/Redirect/Get" デザインパターンを完全に活用できます。実装では、ユーザーが Jakarta Expression Language 暗黙オブジェクト
flashおよびExternalContext.getFlash()を介してフラッシュにアクセスできるようにする必要があります。実装では、フラッシュが Jakarta Server Pages と Facelets for Jakarta Faces 2 の両方から使用できることを確認する必要があります。Mapインターフェースを公開することに加えて、Flash自体のメソッドとして公開されるいくつかの機能があります。これらの各機能には、javadoc に従って、Jakarta Expression Language を介してアクセスすることもできます。Jakarta Expression Language Usage Example
最初のページ
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="jakarta.tags.core"> <!-- extra code removed --> <c:set target="#{flash}" property="foo" value="fooValue" />次ページ
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="jakarta.faces.html"> <!-- extra code removed --> <h:outputText value="#{flash.foo}" /> will be "fooValue" without the quotes.同じ使用構文が Jakarta Server Pages で使用可能でなければなりません。
h:buttonやh:linkなど、ブラウザーがクリック時に GET リクエストを発行する出力コンポーネントと連携してフラッシュを使用する場合は、追加のアクションを実行する必要があることに注意してください。次の例は、このような状況でフラッシュを使用する 1 つの方法を示しています。最初のページ
<h:button id="nextButton" value="Next (button)" outcome="next.xhtml"> <f:param name="foo" value="bar"/> </h:button>次ページ
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="jakarta.faces.core" xmlns:h="jakarta.faces.html"> <f:metadata> <f:viewParam name="foo" id="foo" value="#{flash.now.foo}" /> </f:metadata> <head /><body> foo = #{flash.foo} </body> </html>この例では、2 番目のページで
#{flash.now}を使用していることに注意してください。これは、ボタンがクリックされたためにサーバーがブラウザーから送信された GET リクエストを処理するまで、値が実際にフラッシュに入らないためです。- 導入:
- 2.0
フィールド概要
フィールド 修飾子と型 フィールド 説明 static StringSENULL_VALUEnull値は、PostKeepFlashValueEventやPostPutFlashValueEventなどのEventObjectのサブクラスのソースとして許可されていないため、null値がフラッシュに入れられるか、フラッシュに保持される場合、この値はnullのソースとして置き換えられます。
コンストラクター概要
コンストラクター コンストラクター 説明 Flash()
方法の概要
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 abstract voiddoPostPhaseActions(FacesContext ctx)すべてのライフサイクルフェーズの実行後に呼び出されるこのメソッドにより、実装は、ライフサイクルを処理するリクエストに適用される Flash スコープ契約を提供するために必要なアクションを実行できます。abstract voiddoPrePhaseActions(FacesContext ctx)すべてのライフサイクルフェーズの実行前に呼び出されるこのメソッドにより、実装は、ライフサイクルを処理するリクエストに適用される Flash スコープ契約を提供するために必要なアクションを実行できます。abstract booleanisKeepMessages()このセッションのフラッシュのこの JavaBeans プロパティの値を返します。abstract booleanisRedirect()このセッションのフラッシュのこのプロパティの値を返します。abstract voidkeep(StringSE key)putNow(java.lang.String, java.lang.Object)、その Jakarta Expression Language 同等物、またはリクエストMapへの以前の呼び出しで保存された値をフラッシュに昇格させ、このセッションのライフサイクルの次のトラバーサルで利用できるようにします。abstract voidputNow(StringSE key, ObjectSE value)次のトラバーサルではなく、ライフサイクルのこのトラバーサルでアクセスできるように、値をフラッシュに入れます。abstract voidsetKeepMessages(boolean newValue)keepMessagesJavaBeans プロパティの Setter。abstract voidsetRedirect(boolean newValue)このプロパティをtrueに設定すると、このセッションでの次のリクエストはリダイレクトになります。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース java.util.MapSE から継承されたメソッド
clear, computeSE, computeIfAbsentSE, computeIfPresentSE, containsKeySE, containsValueSE, entrySet, equalsSE, forEachSE, getSE, getOrDefaultSE, hashCode, isEmpty, keySet, mergeSE, putSE, putAllSE, putIfAbsentSE, removeSE, removeSE, replaceSE, replaceSE, replaceAllSE, size, values
フィールドの詳細
NULL_VALUE
public static final StringSE NULL_VALUE
null値は、PostKeepFlashValueEventやPostPutFlashValueEventなどのEventObjectのサブクラスのソースとして許可されていないため、null値がフラッシュに入れられるか、フラッシュに保持される場合、この値はnullのソースとして置き換えられます。- 関連事項:
- 定数フィールド値
メソッドの詳細
isKeepMessages
public abstract boolean isKeepMessages()
このセッションのフラッシュのこの JavaBeans プロパティの値を返します。この値は、現在の
FacesContextのキューに入れられたFacesMessageインスタンスを保存する必要があるかどうかを決定し、リクエストがポスト後のリダイレクトまたは通常のポストバックに関係なく、このセッションのライフサイクルの次のトラバースでアクセスできるようにします。特殊キー "keepMessages" に対するMapアクセスは、この JavaBeans プロパティの値を返す必要があります。Jakarta Expression Language Usage Example
最初のページ
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="jakarta.tags.core"> <!-- extra code removed --> <c:set target="#{flash}" property="keepMessages" value="true" />次ページ
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="jakarta.faces.html"> <!-- extra code removed --> <h:messages /> Any messages present on the first page must be displayed on this page.- 戻り値:
- メッセージを保持するかどうかを示すブールフラグ。
- 導入:
- 2.0
setKeepMessages
public abstract void setKeepMessages(boolean newValue)
keepMessagesJavaBeans プロパティの Setter。isKeepMessages()を参照してください。- パラメーター:
newValue- このセッションのこのプロパティの新しい値。- 導入:
- 2.0
isRedirect
public abstract boolean isRedirect()
このセッションのフラッシュのこのプロパティの値を返します。次の場合を除き、これは
falseでなければなりません。setRedirect(boolean)は、trueを引数として、現在のライフサイクルトラバーサルで呼び出されました。このセッションの現在のライフサイクルトラバーサルは「実行」フェーズにあり、前のトラバーサルでは、
trueを引数としてsetRedirect(boolean)が呼び出されました。
- 戻り値:
- このセッションのフラッシュのこのプロパティの値。
setRedirect
public abstract void setRedirect(boolean newValue)
このプロパティを
trueに設定すると、このセッションの次のリクエストがリダイレクトになります。リダイレクト時に、サーバーは特定の URI に新しいリクエストを発行するように指示する特別なレスポンスをクライアントに送信することを思い出してください。実装は、そのリクエストでこのプロパティの値を読み取るとtrueが返されることを保証する必要があります。Jakarta Expression Language Usage Example
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="jakarta.tags.core"> <!-- extra code removed --> <c:set target="#{flash}" property="redirect" value="true" />- パラメーター:
newValue- このセッションのこのプロパティの新しい値。- 導入:
- 2.0
putNow
public abstract void putNow(StringSE key, ObjectSE value)
次の走査ではなく、このライフサイクルの走査でアクセスできるように、値をフラッシュに入れます。これは、リクエストマップに値を配置するための単なるエイリアスです。
Jakarta Expression Language Usage Example
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="jakarta.tags.core"> <!-- extra code removed --> <c:set target="#{flash.now}" property="bar" value="barValue" /> <p>Value of \#{flash.now.bar}, should be barValue.</p> <h:outputText value="#{flash.now.bar}" />- パラメーター:
key- このエントリのキーvalue- このエントリの値- 導入:
- 2.0
keep
public abstract void keep(StringSE key)
putNow(java.lang.String, java.lang.Object)、その Jakarta Expression Language 同等物、またはリクエストMapへの以前の呼び出しで保存された値をフラッシュに昇格させ、このセッションのライフサイクルの次のトラバーサルで利用できるようにします。- パラメーター:
key- 引数keyが、putNow(java.lang.String, java.lang.Object)への呼び出しを介してライフサイクルを通じてこのトラバーサルのフラッシュに以前に格納されたエントリの名前である場合、または EL 式#{flash.now.<key>}、リクエストMapへのセットに、あたかもフラッシュにプロモートされる場合put()への呼び出し、または式#{flash.<key>}へのセットが呼び出されていました。
doPrePhaseActions
public abstract void doPrePhaseActions(FacesContext ctx)
すべてのライフサイクルフェーズの実行前に呼び出されるこのメソッドにより、実装は、ライフサイクルを処理するリクエストに適用される Flash スコープ契約を提供するために必要なアクションを実行できます。
- パラメーター:
ctx- このリクエストのFacesContext
doPostPhaseActions
public abstract void doPostPhaseActions(FacesContext ctx)
すべてのライフサイクルフェーズの実行後に呼び出されるこのメソッドにより、実装は、ライフサイクルを処理するリクエストに適用される Flash スコープ契約を提供するために必要なアクションを実行できます。
- パラメーター:
ctx- このリクエストのFacesContext