У меня проблемы с добавлением, а затем удалением AjaxSelfUpdatingTimerBehavior в Apache Wicket. Поведение добавляется нормально, но потом, как только я удаляю поведение, в браузере очень скоро появляется страница «Срок действия истек», я думаю, потому что удаление не было чистым. Моя установка - это, в основном, метка, которая начинает меняться по таймеру, и две ссылки: «идти» и «останавливаться». Я хочу иметь возможность нажимать «идти», а затем «останавливаться» (очевидно, я знаю, что это никогда не сработает!). Вот моя полная разметка:
<html>
<body>
<span wicket:id="message">message will be here</span><br/>
<a wicket:id="go">Go</a><br/>
<a wicket:id="stop">Stop</a>
</body>
</html>
и вот мой код:
// imports all from standard wicket
public class HomePage extends WebPage {
private static final int INTERVAL = 500;
public HomePage(final PageParameters parameters) {
final Component label = new Label("message",
"Hello").setOutputMarkupId(true);
add(label);
final IBehavior updater = new AjaxSelfUpdatingTimerBehavior(Duration
.milliseconds(INTERVAL)) {
@Override
protected void onPostProcessTarget(AjaxRequestTarget target) {
label.setDefaultModelObject(String.valueOf(System.nanoTime()));
}
};
AjaxLink<String> go = new AjaxLink<String>("go") {
@Override
public void onClick(AjaxRequestTarget target) {
label.add(updater);
target.addComponent(label);
}
};
AjaxLink<String> stop = new AjaxLink<String>("stop") {
@Override
public void onClick(AjaxRequestTarget target) {
label.remove(updater);
target.addComponent(label);
}
};
add(go, stop);
}
}
Я использую Wicket 1.4.3.
Любая помощь высоко ценится. Спасибо.