Tengo problemas para agregar y eliminar un AjaxSelfUpdatingTimerBehavior en Apache Wicket. El comportamiento se agrega bien, pero luego, tan pronto como elimino el comportamiento, aparece una "Página vencida" en el navegador muy pronto, supongo que porque la eliminación no fue limpia. Mi configuración es básicamente una etiqueta que comienza a cambiar por temporizador y dos enlaces: "ir" y "detener". Quiero poder hacer clic en "ir" y luego "detener" (obviamente, sé que nunca funcionará al revés). Aquí está mi completa marcado:¿Cómo puedo eliminar correctamente un AjaxSelfUpdatingTimerBehavior de un componente en 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>
y es mi código aquí:
// 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);
}
}
estoy usando Wicket 1.4.3.
Cualquier ayuda muy apreciada. Gracias.
También lo implementé usando el método stop(). No sé si (manualmente) eliminar el comportamiento es realmente necesario. Si se detiene, ya no se ejecutará. Y una vez que los usuarios abren una nueva página, los comportamientos desaparecen de todos modos. – Friederike