jsf-闪存范围-方法参数评估阶段

jsf-闪存范围-方法参数评估阶段,jsf,parameters,Jsf,Parameters,我考虑使用flash scope保存以前的站点uri,以便在目标站点上进行反向重定向 在主站点上,ajax调用bean方法将当前URI保存在flash中,并导航到作为参数提供的目标子站点 在子站点上,使用先前从flash存储的uri调用bean中的一个简单导航方法 问题出在这里: 闪存中的数据是空的,但当我在网站上打印出来时,它是正确的 子站点 #{flash.PREVIOUS_URI} <h:form> <h:commandLink value="Redirect f

我考虑使用flash scope保存以前的站点uri,以便在目标站点上进行反向重定向

在主站点上,ajax调用bean方法将当前URI保存在flash中,并导航到作为参数提供的目标子站点

在子站点上,使用先前从flash存储的uri调用bean中的一个简单导航方法

问题出在这里: 闪存中的数据是空的,但当我在网站上打印出来时,它是正确的

子站点

#{flash.PREVIOUS_URI}
<h:form>
    <h:commandLink value="Redirect from flash" 
        action="#{bean.navigate(flash.PREVIOUS_URI)}"/>
</h:form>

public String navigate(final String outcome)
{
    return outcome;
}
{flash.PREVIOUS_URI}
公共字符串导航(最终字符串结果)
{
返回结果;
}
动作调用中的
flash.PREVIOUS_URI
是否在下一个请求时进行评估,从而导致flash值为空


或者我如何将其保存为站点上的var以使其工作<代码>似乎不起作用。

在回发请求的调用操作阶段评估
操作
属性,而不是在初始请求的呈现响应阶段,正如您所期望的那样。因此,在调用操作期间,flash作用域属性将不再可用

您最好将其作为
传递:

<h:commandLink value="Redirect from flash" action="#{bean.navigate}">
    <f:param name="previousURI" value="#{flash.PREVIOUS_URI}" />
</h:commandLink>

这样一来,就不需要
,您还可以得到一个完全值得使用的
元素,该元素可用于书签和搜索机器人索引。

将检查
的使用情况。我有一些业务数据(在子网站上的登录表单),否则就没有什么意义了。目前,我也在考虑使用javascript进行重定向,带有计时器和通知,如
,在3秒钟内,您将自动重定向到上一页。
使此方法过时。很好。如果登录成功,我可以回发到同一视图并呈现元刷新标记,并向用户显示通知。如果我只是通过一个视图参数提供上一个url,我仍然在与自己斗争。这种方法要灵活得多,但在许多网站上,它通常看起来很丑陋。对于这种东西,Flash示波器看起来很有前途。
<h:link value="Redirect from flash" outcome="#{flash.previousURI}" />