Repository: wicket Updated Branches: refs/heads/wicket-8.x 4f9b029fa -> 23c46412d
[WICKET-6617] headers are added to header-items if specified Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/23c46412 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/23c46412 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/23c46412 Branch: refs/heads/wicket-8.x Commit: 23c46412d175c914ec6c09910cfc4af83bd75cde Parents: 4f9b029 Author: Maxim Solodovnik <solomax...@gmail.com> Authored: Sat Dec 8 11:48:12 2018 +0700 Committer: Maxim Solodovnik <solomax...@gmail.com> Committed: Sat Dec 8 11:48:12 2018 +0700 ---------------------------------------------------------------------- .../wicket/ajax/res/js/wicket-ajax-jquery.js | 11 +++-- .../html/internal/HtmlHeaderContainer.java | 46 ++++++++++---------- .../html/internal/HtmlHeaderItemsContainer.java | 9 ++++ 3 files changed, 40 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/23c46412/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js index 8370208..b93a98b 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js @@ -2116,10 +2116,15 @@ // Adds the element to page head addElement: function (element) { - var head = document.getElementsByTagName("head"); + var headItems = document.querySelector('head meta[name="wicket.header.items"]'); + if (headItems) { + headItems.parentNode.insertBefore(element, headItems); + } else { + var head = document.querySelector("head"); - if (head[0]) { - head[0].appendChild(element); + if (head) { + head.appendChild(element); + } } }, http://git-wip-us.apache.org/repos/asf/wicket/blob/23c46412/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 e906560..ebe0de3 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 @@ -66,7 +66,7 @@ import org.apache.wicket.response.StringResponse; * <li><wicket:head> and it's content is copied to the output. Components contained in * <wicket:head> are rendered as usual</li> * </ul> - * + * * @author Juergen Donnerstag */ public class HtmlHeaderContainer extends TransparentWebMarkupContainer @@ -89,7 +89,7 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer /** * Combines the {@link MarkupStream} with the open tag, together representing the header section * in the markup. - * + * * @author papegaaij */ public static class HeaderStreamState @@ -122,7 +122,7 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer /** * Construct - * + * * @see Component#Component(String) */ public HtmlHeaderContainer(final String id) @@ -161,19 +161,19 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer final StringResponse response = new StringResponse(); getRequestCycle().setResponse(response); - IHeaderResponse headerResponse = getHeaderResponse(); - if (!response.equals(headerResponse.getResponse())) - { - getRequestCycle().setResponse(headerResponse.getResponse()); - } + try (IHeaderResponse headerResponse = getHeaderResponse()) { + if (!response.equals(headerResponse.getResponse())) + { + getRequestCycle().setResponse(headerResponse.getResponse()); + } - // Render the header sections of all components on the page - AbstractHeaderRenderStrategy.get().renderHeader(this, - new HeaderStreamState(markupStream, openTag), getPage()); + // Render the header sections of all components on the page + AbstractHeaderRenderStrategy.get().renderHeader(this, + new HeaderStreamState(markupStream, openTag), getPage()); - // Close the header response before rendering the header container itself - // See https://issues.apache.org/jira/browse/WICKET-3728 - headerResponse.close(); + // Header response will be auto-closed before rendering the header container itself + // See https://issues.apache.org/jira/browse/WICKET-3728 + }; // Cleanup extraneous CR and LF from the response CharSequence output = getCleanResponse(response); @@ -205,7 +205,7 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer * Renders the content of the <head> section of the page, including <wicket:head> * sections in subclasses of the page. For every child-component, the content is rendered to a * string and passed to {@link IHeaderResponse}. - * + * * @param headerStreamState */ public void renderHeaderTagBody(HeaderStreamState headerStreamState) @@ -236,11 +236,11 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer } /** - * + * * @param response * @return Cleaned up response */ - private CharSequence getCleanResponse(final StringResponse response) + private static CharSequence getCleanResponse(final StringResponse response) { CharSequence output = response.getBuffer(); if (output.length() > 0) @@ -274,7 +274,7 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer } /** - * + * * @return True if open and close tag are to be rendered. */ protected boolean renderOpenAndCloseTags() @@ -284,7 +284,7 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer /** * Check if the header component is ok to render within the scope given. - * + * * @param scope * The scope of the header component * @param id @@ -295,13 +295,13 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer { if (renderedComponentsPerScope == null) { - renderedComponentsPerScope = new HashMap<String, List<String>>(); + renderedComponentsPerScope = new HashMap<>(); } List<String> componentScope = renderedComponentsPerScope.get(scope); if (componentScope == null) { - componentScope = new ArrayList<String>(); + componentScope = new ArrayList<>(); renderedComponentsPerScope.put(scope, componentScope); } @@ -323,7 +323,7 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer /** * Factory method for creating header response - * + * * @return new header response */ protected IHeaderResponse newHeaderResponse() @@ -340,7 +340,7 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer /** * Returns the header response. - * + * * @return header response */ public IHeaderResponse getHeaderResponse() http://git-wip-us.apache.org/repos/asf/wicket/blob/23c46412/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java index 636eac3..4249c6a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java @@ -16,6 +16,8 @@ */ package org.apache.wicket.markup.html.internal; +import org.apache.wicket.request.Response; + /** * A specialization of HtmlHeaderContainer that doesn't render * <head> and &l;/head> around the header contributions. @@ -39,6 +41,13 @@ public class HtmlHeaderItemsContainer extends HtmlHeaderContainer } @Override + protected void onAfterRender() { + super.onAfterRender(); + final Response webResponse = getResponse(); + webResponse.write("<meta name=\"wicket.header.items\"/>"); + } + + @Override protected boolean renderOpenAndCloseTags() { return false;