Grundlegendes zu Flash Scope in JSF2

Soweit ich weiß, sind Objekte, die im Flash-Bereich in einem Lebenszyklus für Gesichtsanfragen platziert wurden, für den nächsten Lebenszyklus für Gesichtsanfragen verfügbar und werden dann gelöscht.

Angenommen, ich habe zwei Seiten:

page01.xhtml:

<h:form>
    <h:commandButton  action="#{page01Bean.action}" />
</h:form>

Seite01Bean:

@ManagedBean
@RequestScoped
public class Page01Bean {

        public void action(){
            FacesContext.getCurrentInstance().getExternalContext().getFlash().put("fooKey", "fooValue");
        }

}

page02.xhtml:

<h:outputText value="#{flash.fooKey}"/> 

Also, wenn der Knopf drin istpage01.xhtml wird geklickt, startet eine Lebenszyklusanforderung für Gesichter (z. B. Lebenszyklus A) und setzt den Wert unter der aufgerufenen Taste auf FlashfooKey

Dann öffne ich einen anderen Browser-Tab und browsepage02.xhtml . Ein anderer Lebenszyklus für Gesichtsanfragen (z. B. Lebenszyklus B) beginnt mit dem Rendern dieser Seite. Ich habe erwartet, dass Lifecycle B auf den Flash-Bereich und die Anzeige des vorherigen Lifecycle zugreifen kann (d. H. Lifecycle A)fooValueimpage02.xhtml. Es wird jedoch nichts angezeigt.

Bitte korrigieren Sie mich, was ich an dem Flash-Bereich in diesem Beispiel falsch verstanden habe. Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage