私が理解していることから、Faces リクエスト ライフサイクルの Flash スコープ内に配置されたオブジェクトは、次の Faces リクエスト ライフサイクルで使用可能になり、その後クリアされます。
次の 2 つのページがあるとします。
page01.xhtml :
<h:form>
<h:commandButton action="#{page01Bean.action}" />
</h:form>
Page01Bean :
@ManagedBean
@RequestScoped
public class Page01Bean {
public void action(){
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("fooKey", "fooValue");
}
}
page02.xhtml :
<h:outputText value="#{flash.fooKey}"/>
のボタンpage01.xhtml
がクリックされると、faces リクエスト ライフサイクル (ライフサイクル A など) が開始され、呼び出されたキーの下のフラッシュに値が設定されます。fooKey
次に、別のブラウザー タブを開いて参照し page02.xhtml
ます。別の顔リクエスト ライフサイクル (ライフサイクル B など) がこのページのレンダリングを開始します。ライフサイクル B は以前のライフサイクルのフラッシュ スコープ (つまり、ライフサイクル A) にアクセスしfooValue
、 page02.xhtml
. ただし、何も表示されません。
この例のフラッシュ スコープについて誤解していることを訂正してください。本当にありがとう