Da quanto ho capito, gli oggetti posizionati all'interno dell'ambito Flash in un ciclo di vita delle richieste di facce saranno disponibili per il ciclo di vita delle richieste di facce successive e quindi cancellate.Informazioni su Flash Scope in JSF2
Supponiamo che io ho due pagine:
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}"/>
Così, quando il pulsante di page01.xhtml
viene cliccato, un volti richiesta del ciclo di vita (ad esempio del ciclo di vita A) inizia e impostare il valore per il flash sotto la chiave chiamato fooKey
Poi apro un'altra scheda del browser e cercare page02.xhtml
. Un altro ciclo di vita delle richieste di facce (ad esempio il ciclo di vita B) inizia a eseguire il rendering di questa pagina. Mi aspettavo che il ciclo di vita B potesse accedere al campo di applicazione del flash del ciclo di vita precedente (cioè il ciclo di vita A) e visualizzare fooValue
in page02.xhtml
. Tuttavia, non visualizza nulla.
Per favore correggimi quanto frainteso sull'ambito del flash in questo exmaple. Grazie mille
+1 Per menzionare l'attuazione buggy, è confuso l'inferno fuori di me. – mabi
Impostato su EL non ha fatto il trucco per me, ma invece, posso suggerire di inserirlo in un bean gestito: 'FacesContext.getCurrentInstance(). GetExternalContext(). GetFlash(). Keep (" oValue "); \t \t this.oValue = (ValueClass) FacesContext.getCurrentInstance() getExternalContext() GetFlash() ottenere ("oValue");... ' Si lavora per' GET'ting nuovamente la pagina, ma si rompe in qualche modo dopo una richiesta di ajax + 'GET'. – DanielK