@Override
public void detach(Component component)
{
AjaxRequestTarget target =
component.getRequestCycle().find(AjaxRequestTarget.class);
if (target != null)
{
stop(target);
}
super.detach(component);
}
A small nitpick:
Removing a component in an ART might not be the only reason why
#detach() is called. A developer might call component#detach() to force
a LDM to reload on the next render.
Sven
On 01/17/2013 10:20 AM, [email protected] wrote:
WICKET-4959 Unproperly detached Behavior with TabbedPanels
Stop the Ajax timer behavior when the behavior's component is removed from the
tree
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0b78d759
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0b78d759
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0b78d759
Branch: refs/heads/master
Commit: 0b78d759220c1b09abb0d47b5007757bbfeb4e0c
Parents: e37a9e1
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Thu Jan 17 11:18:22 2013 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Thu Jan 17 11:18:22 2013 +0200
----------------------------------------------------------------------
.../wicket/ajax/AbstractAjaxTimerBehavior.java | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/0b78d759/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
index 83edeaa..a80921d 100644
---
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
+++
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
@@ -194,4 +194,15 @@ public abstract class AbstractAjaxTimerBehavior extends
AbstractDefaultAjaxBehav
String timeoutHandle = getTimeoutHandle();
target.prependJavaScript("clearTimeout("+timeoutHandle+"); delete
"+timeoutHandle+";");
}
+
+ @Override
+ public void detach(Component component)
+ {
+ AjaxRequestTarget target =
component.getRequestCycle().find(AjaxRequestTarget.class);
+ if (target != null)
+ {
+ stop(target);
+ }
+ super.detach(component);
+ }
}