我在添加並刪除Apache Wicket中的AjaxSelfUpdatingTimerBehavior時遇到了問題。該行爲得到了補充,但後來一旦我刪除了行爲,我很快就會在瀏覽器中看到「Page Expired」,我猜是因爲刪除不乾淨。我的設置基本上是一個由計時器開始改變的標籤,以及兩個鏈接:「去」和「停止」。我希望能夠點擊「去」然後「停止」(顯然我知道它永遠不會反過來工作!)。這裏是我完整的標記:如何從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>
,這裏是我的代碼:
// 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。
任何幫助非常感謝。謝謝。
我也使用stop()方法實現了它。我不知道是否(手動)刪除行爲是非常必要的。如果停止,它將不會再執行。一旦用戶打開一個新頁面,行爲無論如何都會消失。 – Friederike 2014-10-23 11:59:03