Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Most often, an application may just need to override a template (see Template Loading) so that a certain control renders differently. Or, an application many need to add a new template to an existing theme. Other times, you might want to create an entirely new theme, perhaps because you are building a rich set of unique and reusable templates for your organization.

...

Wrapping an Existing Theme

The xhtml theme provides several good examples of the "wrapping" technique. The simple theme renders the basic control. The xhtml theme "dresses up" many of the controls by adding a header and footer.

...

One benefit of object-orientated programming is that it lets us "design by difference." We can extend an object and code only the behavior that changes. Themes provide a similar capability. The subdirectory that hosts a theme can contain a theme.properties file. A parent entry can be added to the property file to designate a theme to extend. The ajax theme extends the xhtml theme using this technique.

Code Block
title/template/ajax/theme.properties
parent = xhtml

An extended theme does not need to implement every single template that the Struts Tags expect. It only needs to implement the templates that change. The other templates are loaded from the parent template.