检测Wicket用户不活动

时间:2014-09-19 13:26:13

标签: wicket user-activity

有没有人知道如何使用Wicket来实现这一目标?

我希望在一段时间内未检测到任何用户活动时自动显示Wicket odal窗口。我想以某种方式使用AjaxSelfUpdatingBehavior,但实际上我没有明确的想法。

Wicket可以吗?

2 个答案:

答案 0 :(得分:1)

是的,你可以,我用它作为autologout功能

public class MyTimer extends AbstractAjaxTimerBehavior {

    public MyTimer(int seconds) {
        this(Duration.seconds(seconds));
    }

    @Override
    protected void onTimer(AjaxRequestTarget target) {
         // show your window magic
    }
}

将此添加到您的页面(add(new MyTimer(300));),这将在您指定的秒数后调用。执行ajax调用时,请务必使用新计时器替换计时器,或重置计时器。

答案 1 :(得分:1)

另外,你可以使用一些js库来捕获所有ajax调用,并确保你的用户确实是afk(即使没有碰到他的鼠标)。

例如,请参阅this免费框架及其demo

并且(如果你使用这个js框架)在wicket中你必须处理

ifvisible.idle(function(){
    Wicket.Ajax.get({u: '${callbackUrl}'})// This code will work when page goes into idle status
});

您必须从wicket代码设置$ {callbackUrl},让js知道在java代码中要执行的操作。这样做并不难。看here

这种方法比较棘手,但是如果你实现这一点,你就不必担心用户的行为(他可以阅读网站的信息,不要点击任何ajax链接,但突然间他会看到模态窗口。)