Jsf 2 从f:phaselistener重定向后未显示闪存消息

Jsf 2 从f:phaselistener重定向后未显示闪存消息,jsf-2,phaselistener,flash-scope,Jsf 2,Phaselistener,Flash Scope,我在理解flash在jsf生命周期中是如何工作的方面有一个问题 我试图通过一个正常的get请求从一个阶段侦听器重定向到另一个页面,同时添加一条flash消息(当然我已经设置了flah.keepmessage)以显示在新页面上。但消息没有显示出来。我知道有些地方出了问题,如果有人能帮助实现更好的方法(请不要使用过滤器),我将不胜感激 phaseredirect1.html <h:body> <f:view> <f:phaseListen

我在理解flash在jsf生命周期中是如何工作的方面有一个问题

我试图通过一个正常的get请求从一个阶段侦听器重定向到另一个页面,同时添加一条flash消息(当然我已经设置了flah.keepmessage)以显示在新页面上。但消息没有显示出来。我知道有些地方出了问题,如果有人能帮助实现更好的方法(请不要使用过滤器),我将不胜感激

phaseredirect1.html

    <h:body>
    <f:view>
        <f:phaseListener binding="#{testphase.testPL}"/>
        <div>Testing Phases Redirect 1</div>
    </f:view>
    </h:body>
    <h:body>
    <f:view>
        <div style="width:400px;">
            <p:messages autoUpdate="true" closable="true"/>
            <p>Testing Phases Redirect 2</p>
            <p> Did it display the message? </p>
        </div>
    </f:view>
    </h:body>
phaseredirect2.html

    <h:body>
    <f:view>
        <f:phaseListener binding="#{testphase.testPL}"/>
        <div>Testing Phases Redirect 1</div>
    </f:view>
    </h:body>
    <h:body>
    <f:view>
        <div style="width:400px;">
            <p:messages autoUpdate="true" closable="true"/>
            <p>Testing Phases Redirect 2</p>
            <p> Did it display the message? </p>
        </div>
    </f:view>
    </h:body>

测试阶段2

它显示消息了吗

面配置

    <navigation-case>
        <from-outcome>redirect-to-page2</from-outcome>
        <to-view-id>/phaseredirect2.html</to-view-id>
        <redirect />
    </navigation-case>

重定向到第2页
/phaseredirect2.html
请纠正我。
非常感谢。

在渲染响应阶段,创建flash示波器为时已晚。您最迟需要在调用应用程序阶段执行此操作。基本上,此问题与在
中执行此操作的原因相同,如以下相关问题中所述:

<f:metadata>
    <f:viewParam name="dummy" />
    <f:event type="postInvokeAction" listener="#{bean.init}" />
</f:metadata>
在您的特定情况下,您需要一个虚拟视图参数,以便触发调用操作阶段,然后使用
(在您自己创建自定义事件或根据上述链接问题的答案安装OmniFaces之后):

或者如果你选择了OmniFaces

public void init() {
    Messages.addFlashGlobalInfo("Faces Message: redirecting to page 2...");
    Faces.navigate("redirect-to-page2");
}

我目前运行的是mojarra 2.1.14和primefaces 3.4版本!请让我试一下,然后回复。