3 回答

TA贡献1891条经验 获得超3个赞
简而言之,存储在闪存范围中的变量将在重定向后继续存在,之后将被丢弃。这在实现Post-Redirect-Get模式时非常有用。
如果您尝试通过重定向导航到另一个页面并在加载时访问属性,它们将在那里。完成该请求后,闪存中的值将被丢弃。例如:
你在page1.xhtml中,你有一个commandLink,它使用类似这样的方法重定向到一个新页面(注意:我将使用隐式导航)。
public String navigateToPageB() { FacesContext.getCurrentInstance().getExternalContext().getFlash().put("param1", "Hello World!"); return "pageB?faces-redirect=true";}
呈现pageB.xhtml时,您可以通过EL表达式访问这些值,例如
<h:outputLabel value="#{flash['param1']}" />
这将显示“Hello World!” 我们之前在navigateToPageB中保存的字符串。
至于您的问题,通过在资源管理器中打开新选项卡,您无法访问上一个选项卡上访问的相同上下文,因此您的变量将不可用。

TA贡献2065条经验 获得超14个赞
把它设置在EL没有为我做的技巧,但相反,我可以建议将它放入托管bean:FacesContext.getCurrentInstance().getExternalContext().getFlash().keep("oValue"); this.oValue = (ValueClass) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("oValue");
它适用于GET
再次ting页面,但它在ajax请求后以某种方式中断+ GET
。
添加回答
举报