使用Primefaces控制JSF中所有打开的选项卡?

使用Primefaces控制JSF中所有打开的选项卡?,jsf,primefaces,Jsf,Primefaces,我需要自动注销并发送到登录页面。我是通过primefaces的IddleMonitor制作的: <h:form prependId="false"> <p:idleMonitor timeout="300000"> <p:ajax event="idle" listener="#{mainController.timeout()}" /> </p:idleMonitor>

我需要自动注销并发送到登录页面。我是通过primefaces的IddleMonitor制作的:

  <h:form prependId="false">
            <p:idleMonitor timeout="300000">
             <p:ajax event="idle" listener="#{mainController.timeout()}" />
            </p:idleMonitor> 
    </h:form>

一切都好。但问题是当浏览器中打开两个或多个选项卡时。iddlemonitor将仅对第一个选项卡执行。另一个选项卡将保持打开状态,但会话已关闭。我想在第一个标签启动它的时候。所有选项卡触发注销事件。有什么办法吗?另外,我正在将Java EE 6与JSF 2.2和Primefaces 3.4一起使用,您尝试过了吗?您是否最终试图说,超时应该只发生在当前选项卡/窗口中,并且所有打开相同页面的其他选项卡/窗口都应该由超时事件通知,而这应该只发生在当前HTTP会话中?(您可能会出错。在当前会话中,当超时发生时,注销只应发生一次,并且只有打开相同页面的所有其他选项卡/窗口才会收到通知并重定向到所需页面(登录)。可以使用“推送”发送通知)。在超时完成后,向其他页面发送一条消息,使用@Tiny重定向。是的,这就是我想要的,但如何使用push?我会试着用那个脚本的!我还没有试过。showcase示例使用PrimeFaces 5.2.x(和Eclipse Jetty)这应该与您的环境相匹配。您尝试过了吗?您是否最终试图说超时只应发生在当前选项卡/窗口中,并且所有其他打开了相同页面的选项卡/窗口都应通过超时事件得到通知,而这一切只应发生在当前HTTP会话中?(您可能会出错。在当前会话中,当超时发生时,注销只应发生一次,并且只有打开相同页面的所有其他选项卡/窗口才会收到通知并重定向到所需页面(登录)。可以使用“推送”发送通知)。在超时完成后,向其他页面发送一条消息,使用@Tiny重定向。是的,这就是我想要的,但如何使用push?我会试着用那个脚本的!我还没有试过。showcase示例使用的PrimeFaces 5.2.x(和Eclipse Jetty)应该与您的环境相匹配。
   public void timeout() throws IOException
{

    FacesContext.getCurrentInstance().getExternalContext()
            .redirect("/cas/logout");
}