Apache WicketでAjaxSelfUpdatingTimerBehaviorを追加して削除するのに問題があります。動作は正常に追加されますが、動作を削除するとすぐにブラウザにすぐに「ページの期限切れ」が表示されますが、削除はきれいではなかったと思います。私のセットアップは、基本的にタイマーで変更を開始するラベルと、「go」と「stop」の2つのリンクです。私は "go"をクリックして "stop"をクリックできるようにしたい(明らかに私はそれがまったく別の方法で動作しないことを知っている!)。Apache WicketのコンポーネントからAjaxSelfUpdatingTimerBehaviorを正しく削除するにはどうすればよいですか?
<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>
とここに私のコードです:私はウィケット1.4.3を使用してい
// 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);
}
}
はここに私の完全なマークアップです。
ご迷惑をおかけして申し訳ございません。ありがとう。
また、stop()メソッドを使用して実装しました。私は(手動で)動作を削除することが本当に必要かどうかわかりません。停止してもそれ以上は実行されません。そして、ユーザーが新しいページを開くと、その行動はとにかく消えてしまいます。 – Friederike