org.apache.wicket.markup.parser.filter
Class RelativePathPrefixHandler

java.lang.Object
  extended by org.apache.wicket.markup.parser.AbstractMarkupFilter
      extended by org.apache.wicket.markup.parser.filter.BaseMarkupFilter
          extended by org.apache.wicket.markup.parser.filter.RelativePathPrefixHandler
All Implemented Interfaces:
Serializable, IClusterable, IMarkupFilter, IComponentResolver

public final class RelativePathPrefixHandler
extends BaseMarkupFilter
implements IComponentResolver

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.

Author:
Al Maw
See Also:
Serialized Form

Field Summary
static Behavior RELATIVE_PATH_BEHAVIOR
          Behavior that adds a prefix to src, href and background attributes to make them context-relative
static String WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID
          The id automatically assigned to tags without an id which we need to prepend a relative path to.
 
Constructor Summary
RelativePathPrefixHandler()
           
 
Method Summary
protected  MarkupElement nextTag(ComponentTag tag)
          Invoked with the next ComponentTag
 Component resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag)
          Try to resolve the tag, then create a component, add it to the container and render it.
 
Methods inherited from class org.apache.wicket.markup.parser.filter.BaseMarkupFilter
nextTag
 
Methods inherited from class org.apache.wicket.markup.parser.AbstractMarkupFilter
getCount, getNextFilter, nextComponentTag, setNextFilter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID

public static final String WICKET_RELATIVE_PATH_PREFIX_CONTAINER_ID
The id automatically assigned to tags without an id which we need to prepend a relative path to.

See Also:
Constant Field Values

RELATIVE_PATH_BEHAVIOR

public static final Behavior RELATIVE_PATH_BEHAVIOR
Behavior that adds a prefix to src, href and background attributes to make them context-relative

Constructor Detail

RelativePathPrefixHandler

public RelativePathPrefixHandler()
Method Detail

nextTag

protected final MarkupElement nextTag(ComponentTag tag)
                               throws ParseException
Description copied from class: BaseMarkupFilter
Invoked with the next ComponentTag

Specified by:
nextTag in class BaseMarkupFilter
Returns:
the next tag
Throws:
ParseException

resolve

public Component resolve(MarkupContainer container,
                         MarkupStream markupStream,
                         ComponentTag tag)
Description copied from interface: IComponentResolver
Try to resolve the tag, then create a component, add it to the container and render it.

Specified by:
resolve in interface IComponentResolver
Parameters:
container - The container parsing its markup
markupStream - The current markupStream
tag - The current component tag while parsing the markup
Returns:
null, if not found


Copyright © 2004-2011 Apache Software Foundation. All Rights Reserved.