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);
}
});
大家好。
上面我有代码设置一个计时器并在它有机会启动之前停止它。
然后我有一个链接,点击它应该重新启动计时器,然后计时器应该这样做。
然而,点击该按钮,计时器会两次点击数据库,然后无缘无故停止。任何人都可以解释为什么会发生这种情况。感谢
答案 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;
}