如果用户在给定的时间内空闲,我想将用户发送到/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();
注意,如果您想将滚动或鼠标移动视为活动,请不要忘记限制事件