3

有人知道我如何使用 Wicket 完成此任务吗?

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

Wicket可以做到这一点吗?

4

2 回答 2

1

是的,您可以,我将其用作自动注销功能

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 调用时将计时器替换为新计时器,或将其重置。

于 2014-09-22T06:02:22.217 回答
1

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

例如,查看这个免费的框架和它的演示

并且(如果你使用这个 js 框架)在检票口你必须处理

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

您必须从检票口代码中设置 ${callbackUrl} 以让 js 知道在 java 代码中要执行什么操作。做到这一点并不难。看这里

这种方法比较棘手,但是如果你实现它,你根本不必担心用户的操作(他可以阅读网站的信息并且不点击任何 ajax 链接,但他会突然看到模态窗口)。

于 2014-09-22T07:11:50.687 回答