Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
1.4.21, 1.5.8, 6.4.0
-
None
-
any
Description
Under certain conditions date picker component leaks memory at client side. More concretely DatePicker#renderHead tries to clean up existing date pickers via
AjaxRequestTarget target = component.getRequestCycle().find(AjaxRequestTarget.class);
if (target != null)
{
String escapedComponentMarkupId = getEscapedComponentMarkupId();
String javascript = "var e = Wicket.$('" + escapedComponentMarkupId + "Dp" +
"'); if (e != null && typeof(e.parentNode) != 'undefined' && " +
"typeof(e.parentNode.parentNode != 'undefined'))
";
target.prependJavaScript(javascript);
}
but this fails if "panel" containing date pickers is completely replaced via AJAX. E.g. for date pickers placed on an AJAX navigated repeater. The result is that client side object
YAHOO.wicket
object grows and grows... and for
1- Wicket 1.5.x and wicket 1.4.x this means time for creating new date pickers grows steadily.
2- For wicket 1.6.x there seems not to have any performance hindrance (only the memory leak).
I attach quick starts demonstrating this.