Repository: wicket Updated Branches: refs/heads/wicket-6.x 8b5a4aab7 -> 562d43ccd
WICKET-5960 remove PartialHtmlHeaderContainer from page after writing to the response Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/562d43cc Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/562d43cc Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/562d43cc Branch: refs/heads/wicket-6.x Commit: 562d43ccdd7f305f8ca641817f4b63a07ee8b6a6 Parents: 8b5a4aa Author: Sven Meier <[email protected]> Authored: Sat Aug 15 16:36:48 2015 +0200 Committer: Sven Meier <[email protected]> Committed: Sat Aug 15 16:36:48 2015 +0200 ---------------------------------------------------------------------- .../wicket/ajax/AbstractAjaxResponse.java | 51 +++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/562d43cc/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java index 64d5d23..bbc7f96 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java @@ -141,28 +141,36 @@ public abstract class AbstractAjaxResponse */ public void writeTo(final Response response, final String encoding) { - writeHeader(response, encoding); + try { + writeHeader(response, encoding); - // invoke onbeforerespond event on listeners - fireOnBeforeRespondListeners(); + // invoke onbeforerespond event on listeners + fireOnBeforeRespondListeners(); - // process added components - writeComponents(response, encoding); + // process added components + writeComponents(response, encoding); - fireOnAfterRespondListeners(response); + fireOnAfterRespondListeners(response); - // queue up prepend javascripts. unlike other steps these are executed out of order so that - // components can contribute them from inside their onbeforerender methods. - writePriorityEvaluations(response, prependJavaScripts); + // queue up prepend javascripts. unlike other steps these are executed out of order so that + // components can contribute them from inside their onbeforerender methods. + writePriorityEvaluations(response, prependJavaScripts); - // execute the dom ready javascripts as first javascripts - // after component replacement - List<CharSequence> evaluationScripts = new ArrayList<CharSequence>(); - evaluationScripts.addAll(domReadyJavaScripts); - evaluationScripts.addAll(appendJavaScripts); - writeNormalEvaluations(response, evaluationScripts); + // execute the dom ready javascripts as first javascripts + // after component replacement + List<CharSequence> evaluationScripts = new ArrayList<CharSequence>(); + evaluationScripts.addAll(domReadyJavaScripts); + evaluationScripts.addAll(appendJavaScripts); + writeNormalEvaluations(response, evaluationScripts); - writeFooter(response, encoding); + writeFooter(response, encoding); + } finally { + if (header != null) { + // restore a normal header + page.replace(new HtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID)); + header = null; + } + } } protected abstract void fireOnAfterRespondListeners(Response response); @@ -451,7 +459,7 @@ public abstract class AbstractAjaxResponse // create the htmlheadercontainer if needed if (header == null) { - header = new AjaxHtmlHeaderContainer(this); + header = new AjaxHtmlHeaderContainer(); final Page parentPage = component.getPage(); parentPage.addOrReplace(header); } @@ -493,22 +501,19 @@ public abstract class AbstractAjaxResponse * * @author Matej Knopp */ - private static class AjaxHtmlHeaderContainer extends HtmlHeaderContainer + private class AjaxHtmlHeaderContainer extends HtmlHeaderContainer { private static final long serialVersionUID = 1L; - private final transient AbstractAjaxResponse ajaxResponse; - /** * Constructor. * * @param ajaxResponse * the object that keeps the data for the Ajax response */ - public AjaxHtmlHeaderContainer(final AbstractAjaxResponse ajaxResponse) + public AjaxHtmlHeaderContainer() { super(HtmlHeaderSectionHandler.HEADER_ID); - this.ajaxResponse = ajaxResponse; } /** @@ -518,7 +523,7 @@ public abstract class AbstractAjaxResponse @Override protected IHeaderResponse newHeaderResponse() { - return ajaxResponse.getHeaderResponse(); + return AbstractAjaxResponse.this.getHeaderResponse(); } }
