You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2015/07/11 20:16:54 UTC
[3/3] wicket git commit: WICKET-5941 Headers not rendered for
components inside TransparentWebMarkupContainer on ajax update
WICKET-5941 Headers not rendered for components inside TransparentWebMarkupContainer on ajax update
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a8fd5a76
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a8fd5a76
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a8fd5a76
Branch: refs/heads/master
Commit: a8fd5a763cd316224b1683c70bffc6786fecbfde
Parents: 6f66349
Author: Andrea Del Bene <ad...@apache.org>
Authored: Tue Jul 7 11:31:48 2015 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Sat Jul 11 20:16:21 2015 +0200
----------------------------------------------------------------------
.../html/TransparentWebMarkupContainer.java | 63 ++++++++++++++++++++
.../markup/resolver/ComponentResolvers.java | 4 +-
2 files changed, 65 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/a8fd5a76/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
index ef406c2..d4de194 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/TransparentWebMarkupContainer.java
@@ -19,8 +19,14 @@ package org.apache.wicket.markup.html;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
+import org.apache.wicket.markup.resolver.ComponentResolvers;
import org.apache.wicket.markup.resolver.IComponentResolver;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.http.WebRequest;
/**
* A simple "transparent" markup container.
@@ -61,4 +67,61 @@ public class TransparentWebMarkupContainer extends WebMarkupContainer implements
}
return resolvedComponent;
}
+
+ @Override
+ public void internalRenderHead(HtmlHeaderContainer container)
+ {
+ if(isAjaxRequest())
+ {
+ renderHeadForInnerSiblings(container);
+ }
+
+ super.internalRenderHead(container);
+ }
+
+ private boolean isAjaxRequest()
+ {
+ Request request = RequestCycle.get().getRequest();
+
+ if( request instanceof WebRequest)
+ {
+ WebRequest webRequest = (WebRequest)request;
+ return webRequest.isAjax();
+ }
+
+ return false;
+ }
+
+ private void renderHeadForInnerSiblings(HtmlHeaderContainer container)
+ {
+ MarkupStream stream = new MarkupStream(getMarkup());
+
+ while (stream.hasMore())
+ {
+ MarkupElement childOpenTag = stream.nextOpenTag();
+
+ if ((childOpenTag instanceof ComponentTag) && !stream.atCloseTag())
+ {
+ // Get element as tag
+ final ComponentTag tag = (ComponentTag)childOpenTag;
+
+ // Get component id
+ final String id = tag.getId();
+
+ Component component = null;
+
+ if (get(id) == null)
+ {
+ component = ComponentResolvers.resolveByComponentHierarchy(this, stream, tag);
+ }
+
+ if (component != null)
+ {
+ component.internalRenderHead(container);
+ }
+
+ stream.skipToMatchingCloseTag(tag);
+ }
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/a8fd5a76/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
index 47e431f..d547a9d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ComponentResolvers.java
@@ -75,7 +75,7 @@ public class ComponentResolvers
* @param filter
* @return Null, if no component was found
*/
- private static Component resolveByApplication(final MarkupContainer container,
+ public static Component resolveByApplication(final MarkupContainer container,
final MarkupStream markupStream, final ComponentTag tag, final ResolverFilter filter)
{
for (final IComponentResolver resolver : Application.get()
@@ -103,7 +103,7 @@ public class ComponentResolvers
* @param tag
* @return Null, if no component was found
*/
- private static Component resolveByComponentHierarchy(final MarkupContainer container,
+ public static Component resolveByComponentHierarchy(final MarkupContainer container,
final MarkupStream markupStream, final ComponentTag tag)
{
Component cursor = container;