Ho problemi con l'aggiunta e la rimozione di un AjaxSelfUpdatingTimerBehavior in Apache Wicket. Il comportamento viene aggiunto ok, ma non appena rimuovo il comportamento ottengo una "Pagina scaduta" visualizzata nel browser molto presto, suppongo perché la rimozione non è stata pulita. Il mio set up è fondamentalmente un'etichetta che inizia a cambiare con il timer e due link: "go" e "stop". Voglio poter fare clic su "go" e quindi su "stop" (ovviamente so che non funzionerà mai nel contrario!). Ecco la mia marcatura completa:Come posso rimuovere un AjaxSelfUpdatingTimerBehavior da un componente in 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>
e il mio codice qui:
// 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);
}
}
sto usando Wicket 1.4.3.
Qualsiasi aiuto molto apprezzato. Grazie.
L'ho implementato anche utilizzando il metodo stop(). Non so se (manualmente) rimuovere il comportamento sia davvero necessario. Se viene fermato, non verrà più eseguito. E una volta che gli utenti aprono una nuova pagina, i comportamenti sono comunque spariti. – Friederike