Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测Wicket用户不活动_Wicket_User Activity - Fatal编程技术网

检测Wicket用户不活动

检测Wicket用户不活动,wicket,user-activity,Wicket,User Activity,有人知道我如何使用Wicket来完成这个任务吗 我想在一定时间内没有检测到用户活动时自动显示Wicket odal窗口。我正在考虑以某种方式使用AjaxSelfUpdateBehavior,但实际上我没有明确的想法 Wicket有可能吗 是的,你可以,我用它作为自动功能 public class MyTimer extends AbstractAjaxTimerBehavior { public MyTimer(int seconds) { this(Duration.

有人知道我如何使用Wicket来完成这个任务吗

我想在一定时间内没有检测到用户活动时自动显示Wicket odal窗口。我正在考虑以某种方式使用AjaxSelfUpdateBehavior,但实际上我没有明确的想法


Wicket有可能吗

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

public class MyTimer extends AbstractAjaxTimerBehavior {

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

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

将此添加到您的页面(
Add(newmytimer(300));
)并在指定的秒数后调用。在进行ajax调用时,请确保使用新的计时器替换计时器,或将其重置。

此外,您可以使用一些js库来捕获所有ajax调用,并确保您的用户确实是afk(甚至不触摸鼠标)

例如,请参阅free framework及其应用程序

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

ifvisible.idle(function(){
    Wicket.Ajax.get({u: '${callbackUrl}'})// This code will work when page goes into idle status
});
您必须从wicket代码中设置${callbackUrl},让js知道在java代码中要执行什么操作。做到这一点并不难。看


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

谢谢!您说在进行ajax调用时替换了计时器。如何做到这一点?我认为,您可以将“MyTimer”实例作为变量存储在页面中,并且在页面中处理的每个ajax调用中(通过AjaxLink、AjaxBehavior等),调用MyTimer.restart(AjaxRequestTarget),而不是创建另一个计时器实例。