Webwork provides a tag library decoupled from the view technology. In this section, we describe each tag in general terms, such as the attributes it supports, what the behaviors are, etc. Most tags are supported in all template languages (see JSP Tags, Velocity Tags, and FreeMarker Tags), but some are currently only specific to one language. Whenever a tag doesn't have complete support for every langauge, it will be noted in the reference documents.

The types of tags can be broken in to two types: general and HTML. Besides function and responsibility, the biggest difference between the general tags and the HTML tags is the fact that the HTML tags support templates and themes. In addition to the general tag reference, we also provide examples for using these generic tags in each of the support languages.

Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

General Tags

General tags are used for controlling the execution flow when your pages render. They also allow for data extraction from places other than your action or the value stack, such as Internationalization, JavaBeans, and including additional URLs or action executions.

  1. Control Tags provide control flow, such as if, else, and iterator.
  2. Data Tags allow for data manipulation or creation, such as bean, push, and i18n.

HTML Tags

Unlike the general tags, the HTML tags do not provide much control structure or logic. Rather, they are focussed on using data, either from your action/value stack or from the Data Tags, and displaying it in rich and reusable HTML. All HTML tags have a unique behavior that they are driven by templates and themes. While the general tags simply output some content directly from the tag (if there is any content to output), the HTML tags defer to a template, often grouped together as a theme, to do the actual rendering.

This unique template support allows for you to use the HTML tags to build a rich set of reusable UI components that fit your exact requirements. Please read the Themes and Templates guide for more information on this powerful feature.

  1. Themes and Templates: a must-read explanation of how themes and templates are uses when rendering HTML tags.
  2. Form Tags provide all form-related HTML output, such as form, textfield, and select.
  3. Non Form Tags provide all non-form-related HTML output, such as a, div, and tabbedPanel.

Language Specific Tag Support

WebWork strives to support whatever environment you are most comfortable working in. That is why WebWork does not require a single template language, but instead allows for almost any common language to be used and even provides hooks for new languages. By default, almost every single tag is supported in JSP, Velocity, and FreeMarker. In each of these sections, you'll find examples and techniques for applying the generic tag reference toward your specific language or template choice.

As of WebWork 2.2, FreeMarker has become the "standard" template language recommended by the WebWork team. There are many reasons for this decision, which can be found in various forums archives, but it pretty much boils down to this: FreeMarker provides a richer set of features than Velocity and is also more developer-friendly when errors occur (ie: the error reports are more accurate). JSP, while still used, is much more difficult for applications that demand a more modular approach, such as changing the templates at runtime or uploading packaged "modules" of WebWork actions and template files.
  1. JSP Tags
  2. Velocity Tags
  3. FreeMarker Tags