在JSF中使用PrimeFaces在空闲时重定向用户



如果用户在给定的时间内空闲,我想将用户发送到/login.xhtml。我试过PrimeFaces <p:idlemonitor>,但不知道如何实现这一点。

使用IdleMonitor组件<p:idleMonitor>

<p:idleMonitor timeout="3000">
    <p:ajax event="idle" listener="#{idleMonitorBean.processTimeOut()}"/>
</p:idleMonitor>

注:timeout单位为millseconds

然后在监听器方法中指定redirect()路径。

@Model
public class IdleMonitorBean {
    public void processTimeOut() throws IOException {
        FacesContext.getCurrentInstance().getExternalContext().redirect(
                "/contextroot/index.xhtml");
    }
}

在这种情况下,我更愿意保持客户端。PrimeFaces Extensions pe:javascript可以在这里提供帮助。例如:

<p:idleMonitor timeout="...">
  <pe:javascript event="idle"
                 execute="top.location.href='#{request.contextPath}/login.xhtml'"/>
</p:idleMonitor>

您可以监视用户活动,例如点击(也许您认为鼠标移动或滚动不是空闲的,完全取决于您)。

    var resetActivityTimer = function () {
        if (typeof window.userActivity != 'undefined')
            clearTimeout(window.userActivity);
        window.userActivity = setTimeout(function () {
            window.location.href = 'login.xhtml';
        //number of ms until to be considered idle
        }, 30000);
    };
    $(window).click(function () {
        //if user clicked they are not idle
        resetActivityTimer();
    });
    //initialize timer
    resetActivityTimer();

注意,如果您想将滚动或鼠标移动视为活动,请不要忘记限制事件

相关内容

  • 没有找到相关文章

最新更新