Class OptionsRenderer

java.lang.Object
org.apache.tiles.extras.renderer.OptionsRenderer
All Implemented Interfaces:
org.apache.tiles.request.render.Renderer

public final class OptionsRenderer extends Object implements org.apache.tiles.request.render.Renderer
Provides a custom "options" syntax for attributes. The first option that can be rendered is. Comes from The Ultimate View article.

Actual rendering is delegated to the TypeDetectingRenderer that's supplied in the constructor.

For example: "/WEB-INF/tiles/fragments/${options[myoptions]}/content.jsp" given the myptions list-attribute is defined like:

        <put-list-attribute name="myoptions">
            <add-list-attribute>
                <add-attribute value="car"/>
                <add-attribute value="vechile"/>
                <add-attribute value="advert"/>
            </add-list-attribute>
        </put-list-attribute>
   
will look for content.jsp
first in "/WEB-INF/tiles/fragments/car/" then
second in "/WEB-INF/tiles/fragments/vechile/" and
last in "/WEB-INF/tiles/fragments/advert".

Currently only supports one occurrance of such an "option" pattern in the attribute's value.

Limitation: "looking" for templates is implemented using applicationContext.getResource(..) therefore the option values in the options list need to be visible as applicationResources.

The attribute found and rendered is cached so to improve performance on subsequent lookups. The default cache time-to-live is 300000L, specified by DEFAULT_CACHE_LIFE. It can be customised by setting the system property , see CACHE_LIFE_PROPERTY. Setting it to zero will disable the cache.

  • Field Details

    • CACHE_LIFE_PROPERTY

      public static final String CACHE_LIFE_PROPERTY
    • DEFAULT_CACHE_LIFE

      public static final long DEFAULT_CACHE_LIFE
      See Also:
    • OPTIONS_PATTERN

      public static final Pattern OPTIONS_PATTERN
  • Constructor Details

    • OptionsRenderer

      public OptionsRenderer(org.apache.tiles.request.ApplicationContext applicationContext, org.apache.tiles.request.render.Renderer renderer)
  • Method Details

    • isRenderable

      public boolean isRenderable(String path, org.apache.tiles.request.Request request)
      Specified by:
      isRenderable in interface org.apache.tiles.request.render.Renderer
    • render

      public void render(String path, org.apache.tiles.request.Request request) throws IOException
      Specified by:
      render in interface org.apache.tiles.request.render.Renderer
      Throws:
      IOException