@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);
+       }
  }


Reply via email to