Author: ivaynberg Date: Thu Aug 30 11:10:20 2007 New Revision: 571261 URL: http://svn.apache.org/viewvc?rev=571261&view=rev Log: fix for a possible hierarchy mismatch error
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java?rev=571261&r1=571260&r2=571261&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java Thu Aug 30 11:10:20 2007 @@ -35,20 +35,18 @@ import org.slf4j.LoggerFactory; /** - * The purpose of this filter is to make all "href", "src" and "background" - * attributes found in the markup which contain a relative URL like - * "myDir/myPage.gif" actually resolve in the output HTML, by prefixing them - * with with an appropriate path to make the link work properly, even if the - * current page is being displayed at a mounted URL or whatever. It is applied - * to all non wicket component tags, except for auto-linked tags. + * The purpose of this filter is to make all "href", "src" and "background" attributes found in the + * markup which contain a relative URL like "myDir/myPage.gif" actually resolve in the output HTML, + * by prefixing them with with an appropriate path to make the link work properly, even if the + * current page is being displayed at a mounted URL or whatever. It is applied to all non wicket + * component tags, except for auto-linked tags. * - * It achieves this by being both an IMarkupFilter and IComponentResolver, and - * works similarly to the <wicket:message> code. For each tag, we look to - * see if the path in "href", "src" and "background" attributes is relative. If - * it is, we assume it's relative to the context path and we should prefix it - * appropriately so that it resolves correctly for the current request, even if - * that's for something that's not at the context root. This is done for - * ServletWebRequests by prepending with "../" tokens, for example. + * It achieves this by being both an IMarkupFilter and IComponentResolver, and works similarly to + * the <wicket:message> code. For each tag, we look to see if the path in "href", "src" and + * "background" attributes is relative. If it is, we assume it's relative to the context path and we + * should prefix it appropriately so that it resolves correctly for the current request, even if + * that's for something that's not at the context root. This is done for ServletWebRequests by + * prepending with "../" tokens, for example. * * * @author Al Maw @@ -63,8 +61,8 @@ private static final Logger log = LoggerFactory.getLogger(RelativePathPrefixHandler.class); /** - * The id automatically assigned to tags without an id which we need to - * prepend a relative path to. + * The id automatically assigned to tags without an id which we need to prepend a relative path + * to. */ public static final String WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID = "_relative_path_prefix_"; @@ -72,8 +70,8 @@ private static final String attributeNames[] = new String[] { "href", "src", "background" }; /** - * Behavior that adds a prefix to src, href and background attributes to - * make them context-relative + * Behavior that adds a prefix to src, href and background attributes to make them + * context-relative */ public static final IBehavior RELATIVE_PATH_BEHAVIOR = new AbstractBehavior() { @@ -105,10 +103,9 @@ }; /** - * Get the next MarkupElement from the parent MarkupFilter and handle it if - * the specific filter criteria are met. Depending on the filter, it may - * return the MarkupElement unchanged, modified or it remove by asking the - * parent handler for the next tag. + * Get the next MarkupElement from the parent MarkupFilter and handle it if the specific filter + * criteria are met. Depending on the filter, it may return the MarkupElement unchanged, + * modified or it remove by asking the parent handler for the next tag. * * @see org.apache.wicket.markup.parser.IMarkupFilter#nextTag() * @return Return the next eligible MarkupElement @@ -155,8 +152,7 @@ /** * * @see org.apache.wicket.markup.resolver.IComponentResolver#resolve(org.apache.wicket.MarkupContainer, - * org.apache.wicket.markup.MarkupStream, - * org.apache.wicket.markup.ComponentTag) + * org.apache.wicket.markup.MarkupStream, org.apache.wicket.markup.ComponentTag) */ public boolean resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag) { @@ -171,7 +167,18 @@ } else { - wc = new WebMarkupContainer(id); + // we do not want to mess with the hierarchy, so the container has to be + // transparent as it may have wicket components inside. for example a raw anchor tag + // that contains a label. + wc = new WebMarkupContainer(id) + { + private static final long serialVersionUID = 1L; + + public boolean isTransparentResolver() + { + return true; + } + }; } container.autoAdd(wc, markupStream); return true;