3 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個贊
簡而言之,存儲在閃存范圍中的變量將在重定向后繼續(xù)存在,之后將被丟棄。這在實(shí)現(xiàn)Post-Redirect-Get模式時非常有用。
如果您嘗試通過重定向?qū)Ш降搅硪粋€頁面并在加載時訪問屬性,它們將在那里。完成該請求后,閃存中的值將被丟棄。例如:
你在page1.xhtml中,你有一個commandLink,它使用類似這樣的方法重定向到一個新頁面(注意:我將使用隱式導(dǎo)航)。
public String navigateToPageB() { FacesContext.getCurrentInstance().getExternalContext().getFlash().put("param1", "Hello World!"); return "pageB?faces-redirect=true";}
呈現(xiàn)pageB.xhtml時,您可以通過EL表達(dá)式訪問這些值,例如
<h:outputLabel value="#{flash['param1']}" />
這將顯示“Hello World!” 我們之前在navigateToPageB中保存的字符串。
至于您的問題,通過在資源管理器中打開新選項(xiàng)卡,您無法訪問上一個選項(xiàng)卡上訪問的相同上下文,因此您的變量將不可用。

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個贊
把它設(shè)置在EL沒有為我做的技巧,但相反,我可以建議將它放入托管bean:FacesContext.getCurrentInstance().getExternalContext().getFlash().keep("oValue"); this.oValue = (ValueClass) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("oValue");
它適用于GET
再次ting頁面,但它在ajax請求后以某種方式中斷+ GET
。
添加回答
舉報(bào)