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