2014-02-25 55 views
0

我使用flash作用域變量從頁面1 =>頁面2傳遞一個值。
到達頁面2後,它能夠首次顯示變量。
當我重新加載頁面的Flash變量變爲空。
有什麼辦法保留第2頁的視圖範圍的Flash變量?Flash範圍變量變得過期

+0

爲什麼你想要價值堅持? Flash範圍精確定義爲「在一個請求中生存」。如果你需要消息持久化,你可以迭代Flash範圍,並將你需要的消息放入一個'@ ViewScoped' bean - 我只是想知道爲什麼你想要。 – mabi

+0

如何在page2的後臺bean中設置Flash範圍的值? –

+1

你可以保留下一個重定向的參數。看看[this](http://stackoverflow.com/a/21277621/1199132) –

回答

1

但你可以保持一個閃光燈支持2頁的bean作爲

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") 

您也可以考慮@ViewScoped。

+0

如果我做一個頁面重新加載這些值將關閉,如果它的viewscoped, 如果bean是會話作用域新的值從未在會話中被採取 –

+0

http://www.mkyong.com/jsf2/jsf-2-prerenderviewevent-example/ 給出了一個比PostConstruct更好的例子 –