Jsf 2 如何使用flashScope将消息发送到JSF2中的下一页

Jsf 2 如何使用flashScope将消息发送到JSF2中的下一页,jsf-2,primefaces,Jsf 2,Primefaces,我正在使用JSF 2.0、primefaces 5和JBoss AS 6。在开始时,它会显示以下消息:[JSFImplManagementDeployer]初始化了3个JSF配置:[Mojarra-1.2、MyFaces-2.0、Mojarra-2.0],并尝试使用JSF2 flashScope向下一页发送消息。 这是第一页的ManagedBean: if (error) { FacesMessage facesMessage = new FacesMessage(FacesMessag

我正在使用JSF 2.0、primefaces 5和JBoss AS 6。在开始时,它会显示以下消息:[JSFImplManagementDeployer]初始化了3个JSF配置:[Mojarra-1.2、MyFaces-2.0、Mojarra-2.0],并尝试使用JSF2 flashScope向下一页发送消息。 这是第一页的ManagedBean:

if (error) {
    FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_WARN, "An error has occurred", "Please try again.");
    FacesContext facesContext = FacesContext.getCurrentInstance();
    Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
    flash.setKeepMessages(true);
    flash.setRedirect(true);
    flash.putNow("message", facesMessage);
    facesContext.addMessage(null, facesMessage);
    try {
        facesContext.getExternalContext().redirect("index.xhtml");
    }
    catch (IOException ex) {
        logger.error("IOException during redirection to the home");
    }
}
在我的index.xhtml页面中,我想显示我插入标记的消息:

...
<ui:define name="top">
    <p:messages />
    ...

如果发生错误但未显示消息,则重定向有效。怎么了?我必须在目标页面ManagedBean中编写一些代码吗?

为什么不将该消息放在会话中,并在另一个bean中访问它!?您使用的是哪个JSF实现版本?这个答案可能对你有帮助。另外,如果你只想让这些表情信息存活下来,你也可以帮助你@Makky,你所说的并不能提供相同的行为。使用multitab导航时,Http会话是共享的,因此如果用户从不同的选项卡访问这些视图,它将保持值冲突。您好,我不确定使用的是什么实现版本。在开始JBoss编写时,这行代码[JSFImplManagementDeployer]初始化了3个JSF配置:[Mojarra-1.2,MyFaces-2.0,Mojarra-2.0],所以我认为它使用的是Mojarra-2.0]。在JBossAS 6.0中,我的应用程序是否可以使用更新版本的mojarra?谢谢,我认为问题是由旧的Mojarra版本引起的。如何获得在不使用flashScope的情况下将消息发送到下一页的权限?在介绍flashscope之前,这种行为是通过将消息保存到会话中,然后在下一页中检索得到的,还是有更好的方式?