You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2017/03/27 15:28:46 UTC
wicket git commit: WICKET-6347 added #detach() to all renderers
Repository: wicket
Updated Branches:
refs/heads/WICKET-6347-detachable-renderers [created] 0bc929d71
WICKET-6347 added #detach() to all renderers
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0bc929d7
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0bc929d7
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0bc929d7
Branch: refs/heads/WICKET-6347-detachable-renderers
Commit: 0bc929d71865f052e895fd0918ea297acc7086fa
Parents: 3179d34
Author: Sven Meier <sv...@apache.org>
Authored: Mon Mar 27 17:27:20 2017 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Mon Mar 27 17:27:20 2017 +0200
----------------------------------------------------------------------
.../wicket/markup/html/form/AbstractChoice.java | 8 ++++++++
.../wicket/markup/html/form/IChoiceRenderer.java | 15 ++++++++++++---
.../ajax/markup/html/AjaxEditableChoiceLabel.java | 3 +++
.../html/autocomplete/AutoCompleteBehavior.java | 7 +++++++
.../html/autocomplete/AutoCompleteTextField.java | 8 ++++++++
.../html/autocomplete/IAutoCompleteRenderer.java | 11 +++++++++--
.../extensions/markup/html/form/palette/Palette.java | 2 ++
.../markup/html/form/select/IOptionRenderer.java | 12 ++++++++++--
.../markup/html/form/select/SelectOptions.java | 8 ++++++++
9 files changed, 67 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
index 523116e..fd1cacf 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
@@ -501,4 +501,12 @@ public abstract class AbstractChoice<T, E> extends FormComponent<T>
"This class does not support type-conversion because it is performed "
+ "exclusively by the IChoiceRenderer assigned to this component");
}
+
+ @Override
+ protected void onDetach()
+ {
+ renderer.detach();
+
+ super.onDetach();
+ };
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
index c8345d4..5fcc14e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
@@ -18,8 +18,8 @@ package org.apache.wicket.markup.html.form;
import java.util.List;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.util.io.IClusterable;
/**
* Renders one choice. Separates the 'id' values used for internal representation from 'display
@@ -30,7 +30,7 @@ import org.apache.wicket.util.io.IClusterable;
* @param <T>
* The model object type
*/
-public interface IChoiceRenderer<T> extends IClusterable
+public interface IChoiceRenderer<T> extends IDetachable
{
/**
* Get the value for displaying to an end user.
@@ -70,4 +70,13 @@ public interface IChoiceRenderer<T> extends IClusterable
* @return A choice from the list that has this {@code id}
*/
T getObject(String id, IModel<? extends List<? extends T>> choices);
-}
+
+ /**
+ * Override when needed.
+ */
+ @Override
+ default void detach()
+ {
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
index 2afe6cf..221a42f 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
@@ -324,6 +324,9 @@ public class AjaxEditableChoiceLabel<T> extends AjaxEditableLabel<T>
{
choices.detach();
}
+
+ renderer.detach();
+
super.onDetach();
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
index 02472ac..5f5453a 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
@@ -19,6 +19,7 @@ package org.apache.wicket.extensions.ajax.markup.html.autocomplete;
import java.util.Iterator;
import org.apache.wicket.Application;
+import org.apache.wicket.Component;
import org.apache.wicket.request.IRequestCycle;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.cycle.RequestCycle;
@@ -129,4 +130,10 @@ public abstract class AutoCompleteBehavior<T> extends AbstractAutoCompleteBehavi
* @return iterator over all possible choice objects
*/
protected abstract Iterator<T> getChoices(String input);
+
+ @Override
+ public void detach(Component component)
+ {
+ renderer.detach();
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
index 79b86ea..70536e4 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
@@ -307,4 +307,12 @@ public abstract class AutoCompleteTextField<T> extends TextField<T>
{
return renderer;
}
+
+ @Override
+ protected void onDetach()
+ {
+ renderer.detach();
+
+ super.onDetach();
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
index c2d0a5f..55a0d6b 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
@@ -16,8 +16,8 @@
*/
package org.apache.wicket.extensions.ajax.markup.html.autocomplete;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.request.Response;
-import org.apache.wicket.util.io.IClusterable;
/**
* A renderer used to generate html output for the {@link AutoCompleteBehavior}.
@@ -60,7 +60,7 @@ import org.apache.wicket.util.io.IClusterable;
* @author Janne Hietamäki (jannehietamaki)
*
*/
-public interface IAutoCompleteRenderer<T> extends IClusterable
+public interface IAutoCompleteRenderer<T> extends IDetachable
{
/**
* Render the html fragment for the given completion object. Usually the html is written out by
@@ -94,4 +94,11 @@ public interface IAutoCompleteRenderer<T> extends IClusterable
*/
void renderFooter(Response response, int count);
+ /**
+ * Override when needed.
+ */
+ @Override
+ default void detach()
+ {
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
index 5f8c5f5..93432f9 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
@@ -671,6 +671,8 @@ public class Palette<T> extends FormComponentPanel<Collection<T>>
// an alternative might be to attach it to one of the subcomponents
choicesModel.detach();
+ choiceRenderer.detach();
+
super.onDetach();
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/IOptionRenderer.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/IOptionRenderer.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/IOptionRenderer.java
index e641c57..1854a19 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/IOptionRenderer.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/IOptionRenderer.java
@@ -16,8 +16,8 @@
*/
package org.apache.wicket.extensions.markup.html.form.select;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.util.io.IClusterable;
/**
* @param <T>
@@ -25,7 +25,7 @@ import org.apache.wicket.util.io.IClusterable;
* @author Igor Vaynberg (ivaynberg)
*
*/
-public interface IOptionRenderer<T> extends IClusterable
+public interface IOptionRenderer<T> extends IDetachable
{
/**
* Get the value for displaying to the user.
@@ -45,4 +45,12 @@ public interface IOptionRenderer<T> extends IClusterable
* @return model that will contain the value object
*/
IModel<T> getModel(T value);
+
+ /**
+ * Override when needed.
+ */
+ @Override
+ default void detach()
+ {
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0bc929d7/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
index e0d338e..fdf22c1 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
@@ -185,4 +185,12 @@ public class SelectOptions<T> extends RepeatingView
tag.setType(TagType.OPEN);
}
}
+
+ @Override
+ protected void onDetach()
+ {
+ renderer.detach();
+
+ super.onDetach();
+ }
}
Re: wicket git commit: WICKET-6347 added #detach() to all renderers
Posted by Martin Grigorov <mg...@apache.org>.
Hi Sven,
One minor issue: the renderer is optional (i.e. null-able) in some classes,
so you will have to check before calling its #detach() method. For example
in AjaxEditableChoiceLabel
Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov
On Mon, Mar 27, 2017 at 5:28 PM, <sv...@apache.org> wrote:
> Repository: wicket
> Updated Branches:
> refs/heads/WICKET-6347-detachable-renderers [created] 0bc929d71
>
>
> WICKET-6347 added #detach() to all renderers
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0bc929d7
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0bc929d7
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0bc929d7
>
> Branch: refs/heads/WICKET-6347-detachable-renderers
> Commit: 0bc929d71865f052e895fd0918ea297acc7086fa
> Parents: 3179d34
> Author: Sven Meier <sv...@apache.org>
> Authored: Mon Mar 27 17:27:20 2017 +0200
> Committer: Sven Meier <sv...@apache.org>
> Committed: Mon Mar 27 17:27:20 2017 +0200
>
> ----------------------------------------------------------------------
> .../wicket/markup/html/form/AbstractChoice.java | 8 ++++++++
> .../wicket/markup/html/form/IChoiceRenderer.java | 15 ++++++++++++---
> .../ajax/markup/html/AjaxEditableChoiceLabel.java | 3 +++
> .../html/autocomplete/AutoCompleteBehavior.java | 7 +++++++
> .../html/autocomplete/AutoCompleteTextField.java | 8 ++++++++
> .../html/autocomplete/IAutoCompleteRenderer.java | 11 +++++++++--
> .../extensions/markup/html/form/palette/Palette.java | 2 ++
> .../markup/html/form/select/IOptionRenderer.java | 12 ++++++++++--
> .../markup/html/form/select/SelectOptions.java | 8 ++++++++
> 9 files changed, 67 insertions(+), 7 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/AbstractChoice.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractChoice.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/AbstractChoice.java
> index 523116e..fd1cacf 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/AbstractChoice.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/AbstractChoice.java
> @@ -501,4 +501,12 @@ public abstract class AbstractChoice<T, E> extends
> FormComponent<T>
> "This class does not support type-conversion
> because it is performed "
> + "exclusively by the IChoiceRenderer
> assigned to this component");
> }
> +
> + @Override
> + protected void onDetach()
> + {
> + renderer.detach();
> +
> + super.onDetach();
> + };
> }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/IChoiceRenderer.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/IChoiceRenderer.java
> index c8345d4..5fcc14e 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/IChoiceRenderer.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/IChoiceRenderer.java
> @@ -18,8 +18,8 @@ package org.apache.wicket.markup.html.form;
>
> import java.util.List;
>
> +import org.apache.wicket.model.IDetachable;
> import org.apache.wicket.model.IModel;
> -import org.apache.wicket.util.io.IClusterable;
>
> /**
> * Renders one choice. Separates the 'id' values used for internal
> representation from 'display
> @@ -30,7 +30,7 @@ import org.apache.wicket.util.io.IClusterable;
> * @param <T>
> * The model object type
> */
> -public interface IChoiceRenderer<T> extends IClusterable
> +public interface IChoiceRenderer<T> extends IDetachable
> {
> /**
> * Get the value for displaying to an end user.
> @@ -70,4 +70,13 @@ public interface IChoiceRenderer<T> extends IClusterable
> * @return A choice from the list that has this {@code id}
> */
> T getObject(String id, IModel<? extends List<? extends T>>
> choices);
> -}
> +
> + /**
> + * Override when needed.
> + */
> + @Override
> + default void detach()
> + {
> + }
> +
> +}
> \ No newline at end of file
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> index 2afe6cf..221a42f 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
> @@ -324,6 +324,9 @@ public class AjaxEditableChoiceLabel<T> extends
> AjaxEditableLabel<T>
> {
> choices.detach();
> }
> +
> + renderer.detach();
> +
> super.onDetach();
> }
> }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> index 02472ac..5f5453a 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
> @@ -19,6 +19,7 @@ package org.apache.wicket.extensions.
> ajax.markup.html.autocomplete;
> import java.util.Iterator;
>
> import org.apache.wicket.Application;
> +import org.apache.wicket.Component;
> import org.apache.wicket.request.IRequestCycle;
> import org.apache.wicket.request.IRequestHandler;
> import org.apache.wicket.request.cycle.RequestCycle;
> @@ -129,4 +130,10 @@ public abstract class AutoCompleteBehavior<T> extends
> AbstractAutoCompleteBehavi
> * @return iterator over all possible choice objects
> */
> protected abstract Iterator<T> getChoices(String input);
> +
> + @Override
> + public void detach(Component component)
> + {
> + renderer.detach();
> + }
> }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> index 79b86ea..70536e4 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
> @@ -307,4 +307,12 @@ public abstract class AutoCompleteTextField<T>
> extends TextField<T>
> {
> return renderer;
> }
> +
> + @Override
> + protected void onDetach()
> + {
> + renderer.detach();
> +
> + super.onDetach();
> + }
> }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> index c2d0a5f..55a0d6b 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/ajax/markup/html/autocomplete/IAutoCompleteRenderer.java
> @@ -16,8 +16,8 @@
> */
> package org.apache.wicket.extensions.ajax.markup.html.autocomplete;
>
> +import org.apache.wicket.model.IDetachable;
> import org.apache.wicket.request.Response;
> -import org.apache.wicket.util.io.IClusterable;
>
> /**
> * A renderer used to generate html output for the {@link
> AutoCompleteBehavior}.
> @@ -60,7 +60,7 @@ import org.apache.wicket.util.io.IClusterable;
> * @author Janne Hietamäki (jannehietamaki)
> *
> */
> -public interface IAutoCompleteRenderer<T> extends IClusterable
> +public interface IAutoCompleteRenderer<T> extends IDetachable
> {
> /**
> * Render the html fragment for the given completion object.
> Usually the html is written out by
> @@ -94,4 +94,11 @@ public interface IAutoCompleteRenderer<T> extends
> IClusterable
> */
> void renderFooter(Response response, int count);
>
> + /**
> + * Override when needed.
> + */
> + @Override
> + default void detach()
> + {
> + }
> }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/markup/html/form/palette/Palette.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> index 5f8c5f5..93432f9 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/palette/Palette.java
> @@ -671,6 +671,8 @@ public class Palette<T> extends
> FormComponentPanel<Collection<T>>
> // an alternative might be to attach it to one of the
> subcomponents
> choicesModel.detach();
>
> + choiceRenderer.detach();
> +
> super.onDetach();
> }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/markup/html/form/select/IOptionRenderer.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> index e641c57..1854a19 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/IOptionRenderer.java
> @@ -16,8 +16,8 @@
> */
> package org.apache.wicket.extensions.markup.html.form.select;
>
> +import org.apache.wicket.model.IDetachable;
> import org.apache.wicket.model.IModel;
> -import org.apache.wicket.util.io.IClusterable;
>
> /**
> * @param <T>
> @@ -25,7 +25,7 @@ import org.apache.wicket.util.io.IClusterable;
> * @author Igor Vaynberg (ivaynberg)
> *
> */
> -public interface IOptionRenderer<T> extends IClusterable
> +public interface IOptionRenderer<T> extends IDetachable
> {
> /**
> * Get the value for displaying to the user.
> @@ -45,4 +45,12 @@ public interface IOptionRenderer<T> extends IClusterable
> * @return model that will contain the value object
> */
> IModel<T> getModel(T value);
> +
> + /**
> + * Override when needed.
> + */
> + @Override
> + default void detach()
> + {
> + }
> }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 0bc929d7/wicket-extensions/src/main/java/org/apache/
> wicket/extensions/markup/html/form/select/SelectOptions.java
> ----------------------------------------------------------------------
> diff --git a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> index e0d338e..fdf22c1 100644
> --- a/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> +++ b/wicket-extensions/src/main/java/org/apache/wicket/
> extensions/markup/html/form/select/SelectOptions.java
> @@ -185,4 +185,12 @@ public class SelectOptions<T> extends RepeatingView
> tag.setType(TagType.OPEN);
> }
> }
> +
> + @Override
> + protected void onDetach()
> + {
> + renderer.detach();
> +
> + super.onDetach();
> + }
> }
>
>