WICKET-3367 Rewrite all JavaScript inline event handlers to be proper attached event handlers
Move the JS contribution from AjaxEventBehavior to AbstractDefaultAjaxBehavior. Add missing javadoc to AjaxEventBehavior Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8f8a85a8 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8f8a85a8 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8f8a85a8 Branch: refs/heads/master Commit: 8f8a85a8410f6f6f82e925ab07f9a8d86c48b090 Parents: ed86660 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed Jan 18 09:49:43 2012 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Wed Jan 18 09:49:43 2012 +0100 ---------------------------------------------------------------------- .../wicket/ajax/AbstractDefaultAjaxBehavior.java | 26 +++++++++++- .../org/apache/wicket/ajax/AjaxEventBehavior.java | 33 ++------------ 2 files changed, 29 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/8f8a85a8/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java index 8f30b6e..4738422 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java @@ -34,6 +34,7 @@ import org.apache.wicket.ajax.json.JSONObject; import org.apache.wicket.behavior.AbstractAjaxBehavior; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; import org.apache.wicket.markup.html.IComponentAwareHeaderContributor; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.request.Url; @@ -75,18 +76,39 @@ public abstract class AbstractDefaultAjaxBehavior extends AbstractAjaxBehavior * org.apache.wicket.markup.head.IHeaderResponse) */ @Override - public void renderHead(Component component, IHeaderResponse response) + public void renderHead(final Component component, final IHeaderResponse response) { super.renderHead(component, response); CoreLibrariesContributor.contributeAjax(component.getApplication(), response); - Url baseUrl = RequestCycle.get().getUrlRenderer().getBaseUrl(); + RequestCycle requestCycle = component.getRequestCycle(); + Url baseUrl = requestCycle.getUrlRenderer().getBaseUrl(); CharSequence ajaxBaseUrl = Strings.escapeMarkup(baseUrl.toString()); response.render(JavaScriptHeaderItem.forScript("Wicket.Ajax.baseUrl=\"" + ajaxBaseUrl + "\";", "wicket-ajax-base-url")); renderExtraHeaderContributors(component, response); + + if (component.isEnabledInHierarchy()) + { + StringBuilder js = new StringBuilder(); + js.append("Wicket.Ajax.ajax("); + + js.append(renderAjaxAttributes(component)); + + js.append(");"); + + AjaxRequestTarget target = requestCycle.find(AjaxRequestTarget.class); + if (target == null) + { + response.render(OnDomReadyHeaderItem.forScript(js.toString())); + } + else + { + target.appendJavaScript(js); + } + } } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/8f8a85a8/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java index a011cb8..5923e1b 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java @@ -38,7 +38,7 @@ import org.apache.wicket.util.lang.Args; * } * </pre> * - * This behavior will be linked to the onclick javascript event of the div WebMarkupContainer + * This behavior will be linked to the <em>click</em> javascript event of the div WebMarkupContainer * represents, and so anytime a user clicks this div the {@link #onEvent(AjaxRequestTarget)} of the * behavior is invoked. * @@ -56,7 +56,7 @@ public abstract class AjaxEventBehavior extends AbstractDefaultAjaxBehavior * Construct. * * @param event - * event this behavior will be attached to + * the event this behavior will be attached to */ public AjaxEventBehavior(String event) { @@ -81,35 +81,10 @@ public abstract class AjaxEventBehavior extends AbstractDefaultAjaxBehavior attributes.setEventNames(event); } - @Override - public void renderHead(Component component, IHeaderResponse response) - { - super.renderHead(component, response); - - if (component.isEnabledInHierarchy()) - { - StringBuilder js = new StringBuilder(); - js.append("Wicket.Ajax.ajax("); - - js.append(renderAjaxAttributes(component)); - - js.append(");"); - - AjaxRequestTarget target = getComponent().getRequestCycle().find(AjaxRequestTarget.class); - if (target == null) - { - response.render(OnDomReadyHeaderItem.forScript(js.toString())); - } - else - { - target.appendJavaScript(js); - } - } - } - /** * * @param event + * the event this behavior will be attached to */ protected void onCheckEvent(final String event) { @@ -118,6 +93,7 @@ public abstract class AjaxEventBehavior extends AbstractDefaultAjaxBehavior /** * * @return event + * the event this behavior is attached to */ public final String getEvent() { @@ -138,6 +114,7 @@ public abstract class AjaxEventBehavior extends AbstractDefaultAjaxBehavior * Listener method for the ajax event * * @param target + * the current request handler */ protected abstract void onEvent(final AjaxRequestTarget target); }
