【问题标题】:Wicket 1.4 periodic component state update using AJAXWicket 1.4 使用 AJAX 定期更新组件状态
【发布时间】:2012-11-06 19:07:02
【问题描述】:

我有一个链接应该在服务器上触发某个进程并进入非活动状态,然后它应该在后台监视这个进程,当它完成时,应该更新链接。所有这些操作都应该在 AJAX 的帮助下完成。

链接转换示例:Bake a cake -> Baking a cake -> Load baked cake


这个工作流程可以在AjaxLinkonClick 方法中完成,但它会阻止另一个AJAX 请求,并且会导致处理时间过长。

【问题讨论】:

标签: wicket


【解决方案1】:

这里的一个选项是使用 AbstractAjaxTimerBehavior 定期轮询服务器状态并相应地更新标签

/* Create stopped timer */
AbstractAjaxTimerBehavior timer = new AbstractAjaxTimerBehavior(Duration.seconds(1)) {
    @Override
    protected void onTimer(AjaxRequestTarget target) {
        if (serverIsReady()) {
            /* Stop timer */
            this.stop(target);
            /* Update UI */
            label.setDefaultModel("Load baked cake");
            target.add(label);
        }
    }
});
link.add(timer);
timer.stop();

/* Create triggering event behaviour */
link.add(new AjaxEventBehavior("onclick") {
    @Override
    protected void onEvent(AjaxRequestTarget target) {
        /* Update UI */
        label.setDefaultModel("Baking a cake");
        target.add(label);
        /* Start timer */
        timer.restart(target); /* It seems this method doesn't exist in Wicket 1.4 */
    }
});

【讨论】:

    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2019-05-14
    相关资源
    最近更新 更多