Перенаправление пользователя на домашнюю страницу при простое в течение определенного периода времени
Я хотел бы отправить пользователя на /login.xhtml
если он / она бездействует в течение определенного периода времени. Я пробовал начертания <p:idlemonitor>
но не могу понять, как этого добиться.
3 ответа
Использовать IdleMonitor
составная часть<p:idleMonitor>
<p:idleMonitor timeout="3000">
<p:ajax event="idle" listener="#{idleMonitorBean.processTimeOut()}"/>
</p:idleMonitor>
Замечания:timeout
в миллисекундах
Тогда в вашем методе слушателя просто укажите redirect()
дорожка.
@Model
public class IdleMonitorBean {
public void processTimeOut() throws IOException {
FacesContext.getCurrentInstance().getExternalContext().redirect(
"/contextroot/index.xhtml");
}
}
В этой ситуации я бы предпочел оставить все на стороне клиента. Расширения PrimeFacespe: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 as ideal
}, 30000);
};
$(window).click(function () {
//if user clicked he/she is not ideal
resetActivityTimer();
});
//initialize timer
resetActivityTimer();
Обратите внимание: если вы хотите рассматривать прокрутку или движение мыши как активность, не забывайте регулировать события.