Por lo que entiendo, los objetos colocados dentro del alcance de Flash en un ciclo de vida de solicitud de rostros estarán disponibles para el siguiente ciclo de vida de solicitud de rostros y luego se borrará.Comprender el alcance de flash en JSF2
Supongamos que tengo dos páginas:
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}"/>
Así que cuando se hace clic en el botón en page01.xhtml
, unas caras solicitan ciclo de vida (decir el ciclo de vida A) se inicia y establece el valor en el flash en la clave llamado fooKey
Entonces abro otra pestaña del navegador y busque page02.xhtml
. Otro ciclo de vida de solicitud de rostros (por ejemplo, ciclo de vida B) comienza a mostrar esta página. Esperaba que el ciclo de vida B pudiera acceder al alcance del flash de su ciclo de vida anterior (es decir, ciclo de vida A) y mostrar fooValue
en page02.xhtml
. Sin embargo, no muestra nada.
Corrígeme lo que no entiendo del alcance del flash en este modelo. Muchas gracias
+1 por mencionar la aplicación con errores, se confunden fuera de mí. – mabi
Establecerlo en EL no me sirvió de nada, pero en su lugar, puedo sugerir colocarlo en un bean administrado: 'FacesContext.getCurrentInstance(). GetExternalContext(). GetFlash(). Keep (" oValue "); \t \t this.oValue = (valueClass) FacesContext.getCurrentInstance() getExternalContext() GetFlash get() ("oValue");... ' Funciona para' GET'ting la página de nuevo, pero se rompe de alguna manera después de una solicitud de ajax + 'GET'. – DanielK