Repository: wicket Updated Branches: refs/heads/master 02d586477 -> a9056384f
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/a9056384 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a9056384 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a9056384 Branch: refs/heads/master Commit: a9056384f018e10e6d7cfc0af674057f6660d906 Parents: 02d5864 Author: Sven Meier <[email protected]> Authored: Sat Aug 15 15:39:52 2015 +0200 Committer: Sven Meier <[email protected]> Committed: Sat Aug 15 15:39:52 2015 +0200 ---------------------------------------------------------------------- .../html/internal/HtmlHeaderContainer.java | 8 --- .../apache/wicket/page/PartialPageUpdate.java | 65 +++++++++----------- 2 files changed, 28 insertions(+), 45 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/a9056384/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java index 73aa021..e906560 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java @@ -321,14 +321,6 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer headerResponse = null; } - @Override - protected void onDetach() { - super.onDetach(); - - renderedComponentsPerScope = null; - headerResponse = null; - } - /** * Factory method for creating header response * http://git-wip-us.apache.org/repos/asf/wicket/blob/a9056384/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java index 1817f9d..744473e 100644 --- a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java +++ b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java @@ -149,27 +149,35 @@ public abstract class PartialPageUpdate */ public void writeTo(final Response response, final String encoding) { - writeHeader(response, encoding); + try { + writeHeader(response, encoding); - onBeforeRespond(response); + onBeforeRespond(response); - // process added components - writeComponents(response, encoding); + // process added components + writeComponents(response, encoding); - onAfterRespond(response); + onAfterRespond(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<>(); - 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<>(); + 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; + } + } } /** @@ -470,9 +478,8 @@ public abstract class PartialPageUpdate // create the htmlheadercontainer if needed if (header == null) { - header = new PartialHtmlHeaderContainer(this); - final Page parentPage = component.getPage(); - parentPage.addOrReplace(header); + header = new PartialHtmlHeaderContainer(); + page.addOrReplace(header); } RequestCycle requestCycle = component.getRequestCycle(); @@ -492,7 +499,6 @@ public abstract class PartialPageUpdate } writeHeaderContribution(response); - headerRendering = false; } @@ -511,22 +517,19 @@ public abstract class PartialPageUpdate * * @author Matej Knopp */ - private static class PartialHtmlHeaderContainer extends HtmlHeaderContainer + private class PartialHtmlHeaderContainer extends HtmlHeaderContainer { private static final long serialVersionUID = 1L; - private transient PartialPageUpdate update; - /** * Constructor. * * @param update * the partial page update */ - public PartialHtmlHeaderContainer(final PartialPageUpdate update) + public PartialHtmlHeaderContainer() { super(HtmlHeaderSectionHandler.HEADER_ID); - this.update = update; } /** @@ -536,19 +539,7 @@ public abstract class PartialPageUpdate @Override protected IHeaderResponse newHeaderResponse() { - if (update != null) - { - return update.getHeaderResponse(); - } - - return super.newHeaderResponse(); - } - - @Override - protected void onDetach() - { - super.onDetach(); - update = null; + return PartialPageUpdate.this.getHeaderResponse(); } }
