AbstractAjaxTimerBehavior使用按钮停止并重新启动

时间:2013-12-06 14:35:23

标签: ajax timer wicket

timer= new AbstractAjaxTimerBehavior(Duration.seconds(4)) {

        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        @Override
        protected void onTimer(AjaxRequestTarget target) {


            List<Animal> newData = animalDaoImpl.getByCriteriaAndIdsAbove(
                    animal, lastId);

            if (newData != null & newData.size() > 0) {
                animals.getObject().addAll(newData);
            }

            target.add(animalWmc);
            this.stop(target);              
        }
    };
    add(timer);


add(new AjaxLink<String>("start") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
        timer.restart(target);  
        }
    });

大家好。

上面我有代码设置一个计时器并在它有机会启动之前停止它。

然后我有一个链接,点击它应该重新启动计时器,然后计时器应该这样做。

然而,点击该按钮,计时器会两次点击数据库,然后无缘无故停止。任何人都可以解释为什么会发生这种情况。感谢

1 个答案:

答案 0 :(得分:0)

最简单的解决方案(但肯定不是最好的解决方案):

根据布尔变量

执行onTimer中的代码

    @Override
    protected void onTimer(AjaxRequestTarget target) {
        if (executeTimer) {
            // do your database stuff, ...
            target.add(animalWmc);
        }
    }

并更改executeTimer

onClick(AjaxRequestTarget target)的值

    @Override
    public void onClick(AjaxRequestTarget target) {
        executeTimer = true;
    }