Author: mgrigorov Date: Mon Oct 31 08:58:23 2011 New Revision: 1195377 URL: http://svn.apache.org/viewvc?rev=1195377&view=rev Log: WICKET-4172 Enclosure can't find a child with deeper path in TransparentWebMarkupContainer
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java?rev=1195377&r1=1195376&r2=1195377&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/Enclosure.java Mon Oct 31 08:58:23 2011 @@ -28,6 +28,7 @@ import org.apache.wicket.markup.parser.f import org.apache.wicket.markup.resolver.ComponentResolvers; import org.apache.wicket.markup.resolver.ComponentResolvers.ResolverFilter; import org.apache.wicket.markup.resolver.IComponentResolver; +import org.apache.wicket.util.string.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -171,7 +172,9 @@ public class Enclosure extends WebMarkup private Component getChildComponent(final MarkupStream markupStream, MarkupContainer enclosureParent) { - Component controller = enclosureParent.get(getChildId()); + String fullChildId = getChildId(); + + Component controller = enclosureParent.get(fullChildId); if (controller == null) { int orgIndex = markupStream.getCurrentIndex(); @@ -185,10 +188,15 @@ public class Enclosure extends WebMarkup ComponentTag tag = markupStream.getTag(); if ((tag != null) && (tag.isOpen() || tag.isOpenClose())) { - if (childId.equals(tag.getId())) + String tagId = tag.getId(); + + if (fullChildId.equals(tagId)) { + ComponentTag fullComponentTag = new ComponentTag(tag); + fullComponentTag.setId(childId.toString()); + controller = ComponentResolvers.resolve(enclosureParent, - markupStream, tag, new ResolverFilter() + markupStream, fullComponentTag, new ResolverFilter() { public boolean ignoreResolver( final IComponentResolver resolver) @@ -198,6 +206,10 @@ public class Enclosure extends WebMarkup }); break; } + else if (fullChildId.startsWith(tagId + PATH_SEPARATOR)) + { + fullChildId = Strings.afterFirst(fullChildId, PATH_SEPARATOR); + } } } }