Jsf 闪存作用域变量即将过期

Jsf 闪存作用域变量即将过期,jsf,primefaces,icefaces,Jsf,Primefaces,Icefaces,我正在使用flash作用域变量从第1页=>第2页传递一个值。 到达第2页后,它能够第一次显示变量。 重新加载页面时,flash变量变为null。 有没有办法在第2页中为视图范围保留flash变量?但是您可以在第2页的备份bean中保留一个flash范围的变量作为 String myFlashVar; @PostConstruct public void init() { myFlashVar= FacesContext.getCurrentInstance().

我正在使用flash作用域变量从第1页=>第2页传递一个值。
到达第2页后,它能够第一次显示变量。
重新加载页面时,flash变量变为null。

有没有办法在第2页中为视图范围保留flash变量?

但是您可以在第2页的备份bean中保留一个flash范围的变量作为

String myFlashVar;
@PostConstruct     
public void init() {         
   myFlashVar= FacesContext.getCurrentInstance().getExternalContext().getFlash().get("flashkey"‌​). toString();     
}
另一种方法是

@ManagedProperty("#{flash}")   
private Flash flash;//then you can access it as flash.get("flashkey")

您也可以考虑@视图范围。 为什么希望该值保持不变?闪存范围精确定义为“一次请求生存”。如果您需要消息持久化,您可能可以遍历flash作用域并将所需的消息填充到

@ViewScoped
bean中-我只是想知道您为什么要这样做。如何在page2的支持bean中设置flash作用域值?您可以保留参数以备下次重定向。查看一下如何在backingbean中保留值
@PostConstruct public void init(){myFlashVar=FacesContext.getCurrentInstance().getExternalContext().getFlash().get(“flashkey”);}
@mek最好将此作为一个答案,注释中的代码看起来很糟糕。如果我重新加载一个页面,如果它的视图范围被限定,这些值就会消失,如果bean是会话范围的,那么会话中从未使用过新值,给出了一个比PostConstruct更好的示例