Entenda o escopo do Flash no JSF2
Pelo que entendi, os objetos colocados dentro do escopo do Flash em um ciclo de vida de solicitação de faces estarão disponíveis para o próximo ciclo de vida de solicitação de faces e, em seguida, serão limpos.
Suponha que eu tenha duas 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}"/>
Então, quando o botãopage01.xhtml
é clicado, um ciclo de vida de solicitação de faces (digamos, ciclo de vida A) inicia e define o valor para o flash sob a chave chamadafooKey
Então eu abro outra aba do navegador e navegopage02.xhtml
. Outro ciclo de vida de solicitação de faces (digamos, ciclo de vida B) começa a renderizar essa página. Eu esperava que o ciclo de vida B pudesse acessar o escopo de flash do ciclo de vida anterior (ou seja, o ciclo de vida A) e exibirfooValue
empage02.xhtml
. No entanto, não exibe nada.
Por favor, corrija-me o que eu entendi mal sobre o alcance do flash neste exemplo. Muito obrigado