You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Apache Wiki <wi...@apache.org> on 2011/04/06 23:08:26 UTC

[Tapestry Wiki] Update of "Tapestry5JSPEditorEclipse" by Laurent Guerin

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for change notification.

The "Tapestry5JSPEditorEclipse" page has been changed by Laurent Guerin.
http://wiki.apache.org/tapestry/Tapestry5JSPEditorEclipse?action=diff&rev1=16&rev2=17

--------------------------------------------------

- = How to use the built in JSP Eclipse Editor and a custom tld file to get code completion in Eclipse 3.4+ and Tapestry5 =
- I have been looking for a method to get "code" completion while editing *.tml files in Eclipse.
- 
- The method I have come up with is using the Eclipse JSP editor to edit *.tml files, and a TLD file.
- 
- Attached are 5 documents. (These are also available [[https://issues.apache.org/jira/browse/TAP5-120|here]].)
- 
-  * [[attachment:INSTALL.txt]]
-  * [[attachment:t5.0.19.tld]]
-  * [[attachment:t5.1.0.7.tld]]
-  * [[attachment:t5.2.0.tld]]
-  * [[attachment:NewTMLTemplate.xml]]
- 
- The text below mirrors INSTALL.txt. All steps were performed on Eclipse 3.4, but I don't see any reason this shouldn't work on older versions of Eclipse also, although config locations may  differ.
- 
- UPDATE!!! This will not work on Eclipse 3.3. The JSP Editor by default does not appear to easily support the xmlns declarations.
- 
- TLD files have been generated by tapestry-tldgen Maven plugin (http://github.com/exanpe/tapestry-tldgen). You can also use this plugin to generate TLD associated to your own Tapestry 5 components library. Please have a look at http://exanpe.free.fr/tapestry-tldgen/ for advanced information and usage explanation.
- 
- Regardless, this really helps out coupling Eclipse and Tapestry 5.
- 
- #-- Installing and configuring Eclipse for Tapestry 5 tml file editing.
- 
- 1. Associate any *.tml file with the JSP Editor.
- 
-  * Window -> Preferences -> General -> Content Types
-  * Expand Text
-  * Select JSP
-  * Click "Add"
-  * Enter *.tml
-  * Apply and Save.
- 
- 2. Install the TLD associated to your Tapestry 5 version ( Tag Library Definition ) and associate it with the default Tapesty 5 Name Space.
- 
-  * Save the TLD project file to a static location on your system. This will be a known location that will not be removed.
-  * Window -> Preferences -> XML -> XML Catalog
-  * Under "User Specified Entries", create a new association by clicking "Add"
-  * Click on the "File" Icon to browse to the saved TLD file, and select it.
-  * Leave the key type as : "Public ID"
-  * Set the key field to: http://tapestry.apache.org/schema/tapestry_5_0_0.xsd for 5.0 Version and http://tapestry.apache.org/schema/tapestry_5_1_0.xsd for others
-  * Save the entry.
- 
- 3. Install the default *.tml template in the JSP template provider:
- 
-  * Window -> Preferences -> Web -> JSP Files -> Editor -> Templates
-  * Click the "import" button and browse to the provided file in this project: "NewTMLTemplate.xml"
-  * Selecting it will import the template.
-  * Click "Apply", "Save"
- 
- Once all steps are completed, you can create a new *.tml file by creating a new JSP File, and selecting the TML Template.
- 
- In any location of the html block, you can get Tapestry Component completion now by starting a new tag with:
- 
-  * <t:
- 
- and hitting ctrl-space. A list of available components will be provided along with standard Eclipse help dialogues.
- 
+ <?xml version="1.0" encoding="UTF-8" ?>
+ <!-- Generated by tapestry-tldgen - http://exanpe.free.fr/tapestry-tldgen/ -->
+ <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1">
+   <tlib-version>5.3.0</tlib-version>
+   <short-name>t</short-name>
+   <uri>http://tapestry.apache.org/schema/tapestry_5_1_0.xsd</uri>
+   <tag>
+     <description></description>
+     <name>basemessages</name>
+     <tag-class>org.apache.tapestry5.corelib.base.BaseMessages</tag-class>
+     <body-content>JSP</body-content>
+   </tag>
+   <tag>
+     <description>Renders out an object using the org.apache.tapestry5.services.ObjectRenderer service. Used primarily on the org.apache.tapestry5.corelib.pages.ExceptionReport page.
+  This is focused on objects that have a specific org.apache.tapestry5.services.ObjectRenderer strategy. The org.apache.tapestry5.corelib.components.BeanDisplay component is
+  used for displaying the contents of arbitrary objects in terms of a series of property names and values.</description>
+     <name>renderobject</name>
+     <tag-class>org.apache.tapestry5.corelib.components.RenderObject</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>No description found &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>object</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Used to output raw markup to the client. Unlike, say, an expansion, the output from OutputRaw is unfiltered, with any
+  special characters or entities left exactly as is. This is used in situations where the markup is provided
+  externally, rather than constructed within Tapestry.</description>
+     <name>outputraw</name>
+     <tag-class>org.apache.tapestry5.corelib.components.OutputRaw</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The value to to render. If unbound, and a property of the container matches the component&apos;s id, then that
+  property will be the source of the value. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>TextField component corresponds to input type=&quot;text&quot; element. The value parameter will be editted. TextField
+  is generally used with string values, but other values are acceptible, as long as they can be freely converted back
+  and forth to strings.
+  
+  Includes the size attribute, if a org.apache.tapestry5.beaneditor.Width annotation is present on
+  the property bound to the value parameter.</description>
+     <name>textfield</name>
+     <tag-class>org.apache.tapestry5.corelib.components.TextField</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Defines how nulls on the server side, or sent from the client side, are treated. The selected strategy may
+  replace the nulls with some other value. The default strategy leaves nulls alone. Another built-in strategy,
+  zero, replaces nulls with the value 0. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : nullfieldstrategy
+ </description>
+       <name>nulls</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.NullFieldStrategy</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Provider of annotations used for some defaults. Annotation are usually provided in terms of the value parameter
+  (i.e., from the getter and/or setter bound to the value parameter). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>annotationProvider</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ioc.AnnotationProvider</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object which will perform translation between server-side and client-side representations. If not specified,
+  a value will usually be generated based on the type of the value parameter. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : translate
+ </description>
+       <name>translate</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldTranslator</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value to be read and updated. This is not necessarily a string, a translator may be provided to convert
+  between client side and server side representations. If not bound, a default binding is made to a property of the
+  container matching the component&apos;s id. If no such property exists, then you will see a runtime exception due to
+  the unbound value parameter. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object that will perform input validation (which occurs after translation). The validate binding prefix is
+  generally used to provide this object in a declarative fashion. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : validate
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldValidator</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Generates a series of links used to jump to a particular page index within the overall data set.</description>
+     <name>gridpager</name>
+     <tag-class>org.apache.tapestry5.corelib.components.GridPager</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If not null, then each link is output as a link to update the specified zone. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>zone</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The number of rows displayed per page. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>rowsPerPage</name>
+       <required>true</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Number of pages before and after the current page in the range. The pager always displays links for 2 * range + 1
+  pages, unless that&apos;s more than the total number of available pages. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>range</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The current page number (indexed from 1). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>currentPage</name>
+       <required>true</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The source of the data displayed by the grid (this is used to determine how many rows are available, which in turn determines the page count). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>source</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.grid.GridDataSource</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A non visual component used to provide notifications to its container during a form submission. Records actions into
+  the form on org.apache.tapestry5.annotations.BeginRender and org.apache.tapestry5.annotations.AfterRender
+  that (during the form submission) triggers &quot;BeginSubmit&quot; and &quot;AfterSubmit&quot; events.  The container can receive these
+  events to perform setup before a group of components process their submission, and perform cleanup afterwards.</description>
+     <name>submitnotifier</name>
+     <tag-class>org.apache.tapestry5.corelib.components.SubmitNotifier</tag-class>
+     <body-content>JSP</body-content>
+   </tag>
+   <tag>
+     <description>Used to display the properties of a bean, using an underlying org.apache.tapestry5.beaneditor.BeanModel. The output definition list: a
+  dl element containing a series of dt/dd pairs. The property label is used as the dt
+  and the property value (formatted as per the datatype) is the dd. Only properties that have a known data type
+  are displayed.
+  
+  The property id is used as the class attribute of the dt and dd element, allowing CSS customization
+  per property. This does not occur when lean is bound to true.
+  
+  The outer dl element has the CSS class &quot;t-beandisplay&quot;.</description>
+     <name>beandisplay</name>
+     <tag-class>org.apache.tapestry5.corelib.components.BeanDisplay</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Where to search for local overrides of property display blocks as block parameters. Further, the container of the
+  overrides is used as the source for overridden validation messages. This is normally the component itself, but
+  when the component is used within a BeanEditForm, it will be the BeanEditForm&apos;s block parameter that will be
+  searched. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ComponentResources</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be added to the org.apache.tapestry5.beaneditor.BeanModel
+  (only used
+  when a default model is created automatically). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>add</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names indicating the order in which the properties should be presented. The
+  names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
+  orde. Only used
+  when a default model is created automatically. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>reorder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be retained from the
+  org.apache.tapestry5.beaneditor.BeanModel (only used
+  when a default model is created automatically).
+  Only these properties will be retained, and the properties will also be reordered. The names are
+  case-insensitive. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>include</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object to be rendered; if not explicitly bound, a default binding to a property whose name matches this
+  component&apos;s id will be used. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>object</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be removed from the org.apache.tapestry5.beaneditor.BeanModel
+  (only used
+  when a default model is created automatically).
+  The names are case-insensitive. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>exclude</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The model that identifies the parameters to be edited, their order, and every other aspect. If not specified, a
+  default bean model will be created from the type of the object bound to the object parameter. The add, include,
+  exclude and reorder
+  parameters are only applied to a default model, not an explicitly provided one. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.beaneditor.BeanModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the CSS class attribute on the dt and dd elements will be ommitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>lean</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Triggers an arbitrary event during rendering. This is often useful to add JavaScript
+  to a page or a component (via calls to the org.apache.tapestry5.services.javascript.JavaScriptSupport environmental).</description>
+     <name>trigger</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Trigger</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>No description found &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>event</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Used to edit a single property of a bean. This is used primarily by org.apache.tapestry5.corelib.components.BeanEditForm. Unlike BeanEditForm, the
+  object to be edited must already exist and the  must be passed in explicitly.</description>
+     <name>propertyeditor</name>
+     <tag-class>org.apache.tapestry5.corelib.components.PropertyEditor</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Source for property editor blocks. This defaults to the default implementation of org.apache.tapestry5.services.BeanBlockSource. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>beanBlockSource</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.services.BeanBlockSource</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Where to search for local overrides of property editing blocks as block parameters. This is normally the
+  containing component of the PropertyEditor, but when the component is used within a BeanEditor, it will be the
+  BeanEditor&apos;s block parameters that will be searched. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.PropertyOverrides</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The model that identifies the parameters to be edited, their order, and every other aspect. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.beaneditor.BeanModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object to be edited by the BeanEditor. This will be read when the component renders and updated when the form
+  for the component is submitted. Typically, the container will listen for a &quot;prepare&quot; event, in order to ensure
+  that a non-null value is ready to be read or updated. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>object</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Identifies the property to be edited by the editor. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>property</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A Checkbox component is simply a input type=&quot;checkbox&quot;.</description>
+     <name>checkbox</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Checkbox</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value to be read or updated. If not bound, the Checkbox will attempt to edit a property of its container
+  whose name matches the component&apos;s id. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Corresponds to input type=&quot;submit&quot; or input type=&quot;image&quot;, a client-side element that can force the
+  enclosing form to submit. The submit responsible for the form submission will post a notification that allows the
+  application to know that it was the responsible entity. The notification is named &quot;selected&quot; and has no context.</description>
+     <name>submit</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Submit</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Defines the mode, or client-side behavior, for the submit. The default is org.apache.tapestry5.corelib.SubmitMode#NORMAL; clicking the
+  button submits the form with validation. org.apache.tapestry5.corelib.SubmitMode#CANCEL indicates the client-side validation
+  should be omitted (though server-side validation still occurs). &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>mode</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.corelib.SubmitMode</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If provided, the component renders an input tag with type &quot;image&quot;. Otherwise &quot;submit&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : asset
+ </description>
+       <name>image</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Asset</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The list of values that will be made available to event handler method of this component when the form is
+  submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The name of the event that will be triggered if this component is the cause of the form submission. The default
+  is org.apache.tapestry5.EventConstants#SELECTED. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>event</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true (the default), then any notification sent by the component will be deferred until the end of the form
+  submission (this is usually desirable). In general, this can be left as the default except when the Submit
+  component is rendering inside a org.apache.tapestry5.corelib.components.Loop, in which case defer should be bound to false (otherwise, the
+  event context will always be the final value of the Loop). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>defer</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A component for formatting output. If the component is represented in the template using an element, then the element
+  (plus any informal parameters) will be output around the formatted value.</description>
+     <name>output</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Output</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, the default, then output is filtered, escaping any reserved characters. If false, the output is written
+  raw. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>filter</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The format to be applied to the object. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>format</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.text.Format</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The element name, derived from the component template. This can even be overridden manually if desired (for
+  example, to sometimes render a surrounding element and other times not). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>elementName</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value to be output (before formatting). If the formatted value is blank, no output is produced. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A component used to collect a provided date from the user using a client-side JavaScript calendar. Non-JavaScript
+  clients can simply type into a text field.
+  
+  One wierd aspect here is that, because client-side JavaScript formatting and parsing is so limited, we (currently)
+  use Ajax to send the user&apos;s input to the server for parsing (before raising the popup) and formatting (after closing
+  the popup). Weird and inefficient, but easier than writing client-side JavaScript for that purpose.
+  
+  Tapestry&apos;s DateField component is a wrapper around WebFX DatePicker.</description>
+     <name>datefield</name>
+     <tag-class>org.apache.tapestry5.corelib.components.DateField</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Used to override the component&apos;s message catalog. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>messages</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ioc.Messages</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object that will perform input validation (which occurs after translation). The translate binding prefix is
+  generally used to provide this object in a declarative fashion. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : validate
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldValidator</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>No description found &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : asset
+ </description>
+       <name>icon</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Asset</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value parameter of a DateField must be a java.util.Date. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.util.Date</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The format used to format and parse dates. This is typically specified as a string which is coerced to a
+  DateFormat. You should be aware that using a date format with a two digit year is problematic: Java (not
+  Tapestry) may get confused about the century. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>format</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.text.DateFormat</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the text field will be hidden, and only the icon for the date picker will be visible. The default
+  is false. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>hideTextField</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A special form of the org.apache.tapestry5.corelib.components.Loop component that adds Ajax support to
+  handle adding new rows and removing existing rows dynamically. Expects that the values being iterated over are
+  entities that can be identified via a org.apache.tapestry5.ValueEncoder.
+  
+  Works with org.apache.tapestry5.corelib.components.AddRowLink and
+  org.apache.tapestry5.corelib.components.RemoveRowLink components.
+  
+  The addRow event will receive the context specified by the context parameter.
+  
+  The removeRow event will receive the client-side value for the row being iterated.</description>
+     <name>ajaxformloop</name>
+     <tag-class>org.apache.tapestry5.corelib.components.AjaxFormLoop</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The context for the form loop (optional parameter). This list of values will be converted into strings and
+  included in the URI. The strings will be coerced back to whatever their values are and made available to event
+  handler methods. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A block to render after the loop as the body of the org.apache.tapestry5.corelib.components.FormInjector.
+  This typically contains a org.apache.tapestry5.corelib.components.AddRowLink. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>addRow</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The objects to iterate over (passed to the internal Loop component). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>source</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Iterable</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make added content
+  visible. This is used with the org.apache.tapestry5.corelib.components.FormInjector component, when adding a new row to the loop. Leaving as
+  null uses the default function, &quot;highlight&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>show</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The element to render for each iteration of the loop. The default comes from the template, or &quot;div&quot; if the
+  template did not specify an element. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>element</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Required parameter used to convert server-side objects (provided from the source) into client-side ids and back.
+  A default encoder may be calculated from the type of property bound to the value parameter. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>encoder</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValueEncoder</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The current value from the source. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>An HTML form, which will enclose other components to render out the various
+  types of fields.
+  
+  A Form emits many notification events. When it renders, it fires a
+  org.apache.tapestry5.EventConstants#PREPARE_FOR_RENDER notification, followed by a
+  org.apache.tapestry5.EventConstants#PREPARE notification.
+  
+  When the form is submitted, the component emits several notifications: first a
+  org.apache.tapestry5.EventConstants#PREPARE_FOR_SUBMIT, then a org.apache.tapestry5.EventConstants#PREPARE: these allow the page to update its
+  state as necessary to prepare for the form submission, then (after components enclosed by the form have operated), a
+  org.apache.tapestry5.EventConstants#VALIDATE event is emitted, to allow for cross-form validation. After that, either a
+  org.apache.tapestry5.EventConstants#SUCCESS OR org.apache.tapestry5.EventConstants#FAILURE event (depending on whether the
+  org.apache.tapestry5.ValidationTracker has recorded any errors). Lastly, a org.apache.tapestry5.EventConstants#SUBMIT event, for any listeners
+  that care only about form submission, regardless of success or failure.
+  
+  For all of these notifications, the event context is derived from the context parameter. This
+  context is encoded into the form&apos;s action URI (the parameter is not read when the form is submitted, instead the
+  values encoded into the form are used).</description>
+     <name>form</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Form</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true (the default), then the JavaScript will be added to position the
+  cursor into the form. The field to
+  receive focus is the first rendered field that is in error, or required,
+  or present (in that order of priority). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>autofocus</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the Form&apos;s action will be secure (using an absolute URL with the HTTPs scheme) regardless
+  of whether the containing page itself is secure or not. This parameter does nothing
+  when  (which is often
+  the case in development mode). This only affects how the Form&apos;s action attribute is rendered, there is
+  not (currently) a check that the form is actually submitted securely. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>secure</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object which will record user input and validation errors. The object
+  must be persistent between requests
+  (since the form submission and validation occurs in a component event
+  request and the subsequent render occurs
+  in a render request). The default is a persistent property of the Form
+  component and this is sufficient for
+  nearly all purposes (except when a Form is rendered inside a loop). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>tracker</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValidationTracker</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Binding the zone parameter will cause the form submission to be handled
+  as an Ajax request that updates the
+  indicated zone. Often a Form will update the same zone that contains it. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>zone</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Prefix value used when searching for validation messages and constraints.
+  The default is the Form component&apos;s
+  id. This is overridden by org.apache.tapestry5.corelib.components.BeanEditForm. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>validationId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The context for the link (optional parameter). This list of values will
+  be converted into strings and included in
+  the URI. The strings will be coerced back to whatever their values are
+  and made available to event handler
+  methods. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Object to validate during the form submission process. The default is the Form component&apos;s container.
+  This parameter should only be used in combination with the Bean Validation Library. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Controls when client validation occurs on the client, if at all. Defaults to org.apache.tapestry5.corelib.ClientValidation#BLUR. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientValidation</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.corelib.ClientValidation</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Outputs paragraph oriented text, typically collected via a org.apache.tapestry5.corelib.components.TextArea
+  component.  The TextArea is split into lines, and each line it output inside its own p element.</description>
+     <name>textoutput</name>
+     <tag-class>org.apache.tapestry5.corelib.components.TextOutput</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>No description found &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Basic looping class; loops over a number of items (provided by its source parameter), rendering its body for each
+  one. When a Loop is inside a org.apache.tapestry5.corelib.components.Form, it records quite a bit of state into the Form to coordinate access
+  to the same (or equivalent) objects during the form submission as during the render. This is controlled by
+  the formState parameter (of type org.apache.tapestry5.corelib.LoopFormState) and can be &apos;none&apos; (nothing stored into the form), &apos;values&apos;
+  (which stores the individual values looped over, or via a org.apache.tapestry5.ValueEncoder, just the value&apos;s ids), and
+  &apos;iteration&apos; (which just stores indexes to the values within the source parameter, which means that the source
+  parameter will be accessed during the form submission).
+  
+  For a non-volatile Loop inside the form, the Loop stores a series of commands that start and end
+  , and stores state for each value in the source parameter (either as full objects
+  when the encoder parameter is not bound, or as client-side objects when there is an encoder). For a Loop that doesn&apos;t
+  need to be aware of the enclosing Form (if any), the formState parameter should be bound to &apos;none&apos;.
+  
+  When the Loop is used inside a Form, it will generate an
+  org.apache.tapestry5.EventConstants#SYNCHRONIZE_VALUES event to inform its container what values were
+  submitted and in what order; this can allow the container to pre-load the values in a single batch form external
+  storage, if that is appropriate.</description>
+     <name>loop</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Loop</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Optional value converter; if provided (or defaulted) and inside a form and not volatile, then each iterated value
+  is converted and stored into the form. A default for this is calculated from the type of the property bound to
+  the value parameter. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>encoder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValueEncoder</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The current value, set before the component renders its body. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The index into the source items. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>index</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Defines the collection of values for the loop to iterate over. If not specified, defaults to a property of the
+  container whose name matches the Loop cmponent&apos;s id. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>source</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Iterable</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The element to render. If not null, then the loop will render the indicated element around its body (on each pass
+  through the loop). The default is derived from the component template. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>element</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A Block to render instead of the loop when the source is empty. The default is to render nothing. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>empty</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Controls what information, if any, is encoded into an enclosing Form. The default value
+  is org.apache.tapestry5.corelib.LoopFormState#VALUES. This parameter
+  is only used if the component is enclosed by a Form. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>formState</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.corelib.LoopFormState</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Standard validation error presenter. Must be enclosed by a
+  org.apache.tapestry5.corelib.components.Form component. If errors are present, renders a
+  div element around a banner message and around an unnumbered list of
+  error messages. Renders nothing if the org.apache.tapestry5.ValidationTracker shows no
+  errors.</description>
+     <name>errors</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Errors</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The banner message displayed above the errors. The default value is &quot;You must correct the
+  following errors before
+  you may continue.&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>banner</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The CSS class for the div element rendered by the component. The default value is &quot;t-error&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>class</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A close relative of the org.apache.tapestry5.corelib.components.If component that inverts the meaning of its
+  test.  This is easier than an If component with the negate parameter set to true.</description>
+     <name>unless</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Unless</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>An alternate org.apache.tapestry5.Block to render if org.apache.tapestry5.corelib.base.AbstractConditional#test() is false. The default, null, means
+  render nothing in that situation. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>else</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the body of the If component is rendered. If false, the body is omitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>test</name>
+       <required>true</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Renders out a series of rows within the table.
+  
+  Inside a org.apache.tapestry5.corelib.components.Form, a series of row index numbers are stored into the form ( ). This is not ideal ... in a situation where the data set can shift between the
+  form render and the form submission, this can cause unexpected results, including applying changes to the wrong
+  objects.</description>
+     <name>gridrows</name>
+     <tag-class>org.apache.tapestry5.corelib.components.GridRows</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Changes how state is recorded into the form to store the  for each row (rather than the index), and restore the  from the client value. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>encoder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValueEncoder</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Optional output parameter (only set during rendering) that identifies the current row index. This is the index on
+  the page (i.e., always numbered from zero) as opposed to the row index inside the org.apache.tapestry5.grid.GridDataSource. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>rowIndex</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the CSS class on each TD cell will be omitted, which can reduce the amount of output from
+  the component overall by a considerable amount. Leave this as false, the default, when you are leveraging the CSS
+  to customize the look and feel of particular columns. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>lean</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Parameter used to set the CSS class for each row (each tr element) within the tbody). This is not
+  cached, so it will be recomputed for each row. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>rowClass</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Number of rows displayed on each page. Long result sets are split across multiple pages. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>rowsPerPage</name>
+       <required>true</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Optional output parameter that stores the current column index. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>columnIndex</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The current page number within the available pages (indexed from 1). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>currentPage</name>
+       <required>true</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The current row being rendered, this is primarily an output parameter used to allow the Grid, and the Grid&apos;s
+  container, to know what object is being rendered. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>row</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true and the component is enclosed by a Form, then the normal state saving logic is turned off. Defaults to
+  false, enabling state saving logic within Forms. This can be set to false when form elements within the Grid are
+  not related to the current row of the grid, or where another component (such as org.apache.tapestry5.corelib.components.Hidden) is used to maintain row state. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>volatile</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Object that provides access to the bean and data models used to render the Grid. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>gridModel</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.grid.GridModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Where to search for property override blocks. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.PropertyOverrides</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A component that generates a user interface for editing the properties of a bean. This is the central component of
+  the org.apache.tapestry5.corelib.components.BeanEditForm, and utilizes a org.apache.tapestry5.corelib.components.PropertyEditor for much of its functionality. This component places
+  a org.apache.tapestry5.services.BeanEditContext into the environment.</description>
+     <name>beaneditor</name>
+     <tag-class>org.apache.tapestry5.corelib.components.BeanEditor</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Where to search for local overrides of property editing blocks as block parameters. Further, the container of the
+  overrides is used as the source for overridden validation messages. This is normally the BeanEditor component
+  itself, but when the component is used within a BeanEditForm, it will be the BeanEditForm&apos;s resources that will
+  be searched. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.PropertyOverrides</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be retained from the
+  org.apache.tapestry5.beaneditor.BeanModel (only used
+  when a default model is created automatically).
+  Only these properties will be retained, and the properties will also be reordered. The names are
+  case-insensitive. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>include</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The model that identifies the parameters to be edited, their order, and every other aspect. If not specified, a
+  default bean model will be created from the type of the object bound to the object parameter. The add, include,
+  exclude and reorder
+  parameters are only applied to a default model, not an explicitly provided one. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.beaneditor.BeanModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names indicating the order in which the properties should be presented. The
+  names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
+  orde. Only used
+  when a default model is created automatically. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>reorder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be added to the org.apache.tapestry5.beaneditor.BeanModel
+  (only used
+  when a default model is created automatically). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>add</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be removed from the org.apache.tapestry5.beaneditor.BeanModel
+  (only used
+  when a default model is created automatically).
+  The names are case-insensitive. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>exclude</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object to be edited by the BeanEditor. This will be read when the component renders and updated when the form
+  for the component is submitted. Typically, the container will listen for a &quot;prepare&quot; event, in order to ensure
+  that a non-null value is ready to be read or updated. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>object</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Used inside an org.apache.tapestry5.corelib.components.AjaxFormLoop component to spur the addition of a new
+  row. Triggers a server-side  event on the
+  AjaxFormLoop, which must return the newly added object, which will be rendered in the body of the AjaxFormLoop and
+  sent to the client web browser.</description>
+     <name>addrowlink</name>
+     <tag-class>org.apache.tapestry5.corelib.components.AddRowLink</tag-class>
+     <body-content>JSP</body-content>
+   </tag>
+   <tag>
+     <description>Generates a client-side hyperlink that submits the enclosing form. If the link is clicked in the browser, the
+  component will trigger an event ( by default) , just like org.apache.tapestry5.corelib.components.Submit
+  .</description>
+     <name>linksubmit</name>
+     <tag-class>org.apache.tapestry5.corelib.components.LinkSubmit</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The name of the event that will be triggered if this component is the cause of the form submission. The default
+  is &quot;selected&quot;. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>event</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true (the default), then any notification sent by the component will be deferred until the end of the form
+  submission (this is usually desirable). In general, this can be left as the default except when the LinkSubmit
+  component is rendering inside a org.apache.tapestry5.corelib.components.Loop, in which case defer should be bound to false (otherwise, the
+  event context will always be the final value of the Loop). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>defer</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Defines the mode, or client-side behavior, for the submit. The default is org.apache.tapestry5.corelib.SubmitMode#NORMAL; clicking the
+  button submits the form with validation. org.apache.tapestry5.corelib.SubmitMode#CANCEL indicates the client-side validation
+  should be omitted (though server-side validation still occurs). &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>mode</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.corelib.SubmitMode</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then no link (or accompanying JavaScript) is written (though the body still is). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The list of values that will be made available to event handler method of this component when the form is
+  submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Multiple selection component. Generates a UI consisting of two select elements configured for multiple
+  selection; the one on the left is the list of &quot;available&quot; elements, the one on the right is &quot;selected&quot;. Elements can
+  be moved between the lists by clicking a button, or double clicking an option (and eventually, via drag and drop).
+  
+  The items in the available list are kept ordered as per org.apache.tapestry5.SelectModel order. When items are moved from the
+  selected list to the available list, they items are inserted back into their proper positions.
+  
+  The Palette may operate in normal or re-orderable mode, controlled by the reorder parameter.
+  
+  In normal mode, the items in the selected list are kept in the same &quot;natural&quot; order as the items in the available
+  list.
+  
+  In re-order mode, items moved to the selected list are simply added to the bottom of the list. In addition, two extra
+  buttons appear to move items up and down within the selected list.
+  
+  Much of the look and feel is driven by CSS, the default Tapestry CSS is used to set up the columns, etc. By default,
+  the select element&apos;s widths are 200px, and it is common to override this to a specific value:
+  
+  
+  
+  style
+  DIV.t-palette SELECT { width: 300px; }
+  /style
+  
+  
+  You&apos;ll want to ensure that both select in each column is the same width, otherwise the display will update
+  poorly as options are moved from one column to the other.
+  
+  Option groups within the org.apache.tapestry5.SelectModel will be rendered, but are not supported by many browsers, and are not
+  fully handled on the client side.</description>
+     <name>palette</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Palette</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The image to use for the move down button (the default is a downward pointing arrow). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>moveDown</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Asset</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Number of rows to display. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>size</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Allows the title text for the selected column (on the right) to be modified. As this is a Block, it can contain
+  conditionals and components. The default is the text &quot;Available&quot;. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>selectedLabel</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The image to use for the deselect button (the default is a left pointing arrow). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>deselect</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Asset</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The image to use for the select button (the default is a right pointing arrow). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>select</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Asset</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Encoder used to translate between server-side objects and client-side strings. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>encoder</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValueEncoder</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The image to use for the move up button (the default is an upward pointing arrow). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>moveUp</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Asset</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Model used to define the values and labels used when rendering. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.SelectModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The list of selected values from the org.apache.tapestry5.SelectModel. This will be updated when the form
+  is submitted. If the value for the parameter is null, a new list will be created, otherwise the existing list
+  will be cleared. If unbound, defaults to a property of the container matching this component&apos;s id. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>selected</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.util.List</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Allows the title text for the available column (on the left) to be modified. As this is a Block, it can contain
+  conditionals and components. The default is the text &quot;Available&quot;. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>availableLabel</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object that will perform input validation. The validate binding prefix is generally used to provide
+  this object in a declarative fashion. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : validate
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldValidator</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then additional buttons are provided on the client-side to allow for re-ordering of the values. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>reorder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Used to record a page property as a value into the form. The value is
+   when rendered, then decoded when the form is
+  submitted,
+  and the value parameter updated.</description>
+     <name>hidden</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Hidden</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Value encoder for the value, usually determined automatically from the type of the property bound to the value
+  parameter. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>encoder</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValueEncoder</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value to read (when rendering) or update (when the form is submitted). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Outputs a single property value. Overrides for individual properties come from block parameters whose name matches
+  the . This component is rarely used on its own, but is a critical piece
+  of the org.apache.tapestry5.corelib.components.BeanDisplay component.</description>
+     <name>propertydisplay</name>
+     <tag-class>org.apache.tapestry5.corelib.components.PropertyDisplay</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Used to search for block parameter overrides (this is normally the enclosing Grid component&apos;s resources). &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.PropertyOverrides</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Identifies the object being rendered. The component will extract a property from the object and render its value
+  (or delegate to a org.apache.tapestry5.Block that will do so). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>object</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Model for property displayed by the cell. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.beaneditor.PropertyModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Source for property display blocks. This defaults to the default implementation of org.apache.tapestry5.services.BeanBlockSource. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>beanBlockSource</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.services.BeanBlockSource</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Part of org.apache.tapestry5.corelib.components.Grid that renders the markup inside a single data cell. GridCell is used inside a pair of loops; the
+  outer loop for each row, the inner loop for each property of the row.</description>
+     <name>gridcell</name>
+     <tag-class>org.apache.tapestry5.corelib.components.GridCell</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Used to search for block parameter overrides (this is normally the enclosing Grid component&apos;s resources). &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.PropertyOverrides</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Identifies the object being rendered. The component will extract a property from the object and render its value
+  (or delegate to a org.apache.tapestry5.Block that will do so). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>object</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Model for property displayed by the cell. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.beaneditor.PropertyModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Source for property display blocks. This defaults to the default implementation of org.apache.tapestry5.services.BeanBlockSource. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>beanBlockSource</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.services.BeanBlockSource</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Conditionally renders its body. May render its tag and any informal parameters.</description>
+     <name>if</name>
+     <tag-class>org.apache.tapestry5.corelib.components.If</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>An alternate org.apache.tapestry5.Block to render if org.apache.tapestry5.corelib.base.AbstractConditional#test() is false. The default, null, means
+  render nothing in that situation. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>else</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the body of the If component is rendered. If false, the body is omitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>test</name>
+       <required>true</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Optional parameter to invert the test. If true, then the body is rendered when the test parameter is false (not
+  true). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>negate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Used inside a org.apache.tapestry5.corelib.components.AjaxFormLoop to remove the current row from the loop.
+  This fires a server-side event (from the AjaxFormLoop component); the event context is the object to be removed. On
+  the client-side, the element for the row is hidden, then removed altogether.</description>
+     <name>removerowlink</name>
+     <tag-class>org.apache.tapestry5.corelib.components.RemoveRowLink</tag-class>
+     <body-content>JSP</body-content>
+   </tag>
+   <tag>
+     <description>Component that triggers an action on the server with a subsequent full page refresh.</description>
+     <name>actionlink</name>
+     <tag-class>org.apache.tapestry5.corelib.components.ActionLink</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The context for the link (optional parameter). This list of values will be converted into strings and included in
+  the URI. The strings will be coerced back to whatever their values are and made available to event handler
+  methods. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Binding the zone parameter turns the link into a an Ajax control that causes the related zone to be updated. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>zone</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then then no link element is rendered (and no informal parameters as well). The body is, however, still
+  rendered. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>An anchor value to append to the generated URL (the hash separator will be added automatically). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>anchor</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A close relative of org.apache.tapestry5.corelib.components.ActionLink except in two ways.
+  
+  First, the event that it triggers is explicitly controlled, rather than always &quot;action&quot;.
+  
+  Second, the event is triggered in its container.
+  
+  This allows slightly shorter URLs but also allows multiple components within the same container to generate identical
+  URLs for common actions.</description>
+     <name>eventlink</name>
+     <tag-class>org.apache.tapestry5.corelib.components.EventLink</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The context for the link (optional parameter). This list of values will be converted into strings and included in
+  the URI. The strings will be coerced back to whatever their values are and made available to event handler
+  methods. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The name of the event to be triggered in the parent component. Defaults to the id of the component. An org.apache.tapestry5.corelib.components.ActionLink triggers an &quot;action&quot; event on itself, and EventLink component
+  triggers any arbitrary event on its container. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>event</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Binding the zone parameter turns the link into a an Ajax control that causes the related zone to be updated. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>zone</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then then no link element is rendered (and no informal parameters as well). The body is, however, still
+  rendered. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>An anchor value to append to the generated URL (the hash separator will be added automatically). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>anchor</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Select an item from a list of values, using an [X]HTML select element on the client side. An validation
+  decorations will go around the entire select element.
+  
+  A core part of this component is the org.apache.tapestry5.ValueEncoder (the encoder parameter) that is used to convert between
+  server-side values and client-side strings. In many cases, a org.apache.tapestry5.ValueEncoder can be generated automatically from
+  the type of the value parameter. The org.apache.tapestry5.services.ValueEncoderSource service provides an encoder in these situations; it
+  can be overriden by binding the encoder parameter, or extended by contributing a org.apache.tapestry5.services.ValueEncoderFactory into the
+  service&apos;s configuration.</description>
+     <name>select</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Select</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The value to read or update. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The model used to identify the option groups and options to be presented to the user. This can be generated
+  automatically for Enum types. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.SelectModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Performs input validation on the value supplied by the user in the form submission. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : validate
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldValidator</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Controls whether an additional blank option is provided. The blank option precedes all other options and is never
+  selected. The value for the blank option is always the empty string, the label may be the blank string; the
+  label is from the blankLabel parameter (and is often also the empty string). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>blankOption</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.corelib.data.BlankOption</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Allows a specific implementation of org.apache.tapestry5.ValueEncoder to be supplied. This is used to create client-side
+  string values for the different options. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>encoder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValueEncoder</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The label to use for the blank option, if rendered. If not specified, the container&apos;s message catalog is
+  searched for a key, id-blanklabel. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>blankLabel</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Binding the zone parameter will cause any change of Select&apos;s value to be handled as an Ajax request that updates
+  the
+  indicated zone. The component will trigger the event org.apache.tapestry5.EventConstants#VALUE_CHANGED to inform its
+  container that Select&apos;s value has changed. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>zone</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description></description>
+     <name>radiogroup</name>
+     <tag-class>org.apache.tapestry5.corelib.components.RadioGroup</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The object that will perform input validation. The validate binding prefix is generally used to provide this
+  object in a declarative fashion. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : validate
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldValidator</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Allows a specific implementation of org.apache.tapestry5.ValueEncoder to be supplied. This is used to
+  create client-side string values for the different radio button values. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>encoder</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ValueEncoder</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The property read and updated by the group as a whole. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A grid presents tabular data. It is a composite component, created in terms of several sub-components. The
+  sub-components are statically wired to the Grid, as it provides access to the data and other models that they need.
+  
+  A Grid may operate inside a org.apache.tapestry5.corelib.components.Form. By overriding the cell renderers of
+  properties, the default output-only behavior can be changed to produce a complex form with individual control for
+  editing properties of each row. This is currently workable but less than ideal -- if the order of rows provided by
+  the org.apache.tapestry5.grid.GridDataSource changes between render and form submission, then there&apos;s the
+  possibility that data will be applied to the wrong server-side objects. In general, when using Grid and Form
+  together, you want to provide the Grid with a org.apache.tapestry5.ValueEncoder (via the encoder parameter).</description>
+     <name>grid</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Grid</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The source of data for the Grid to display. This will usually be a List or array but can also be an explicit
+  org.apache.tapestry5.grid.GridDataSource. For Lists and object arrays, a GridDataSource is created automatically as a wrapper
+  around the underlying List. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>source</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.grid.GridDataSource</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>CSS class for the table element. In addition, informal parameters to the Grid are rendered in the table
+  element. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>class</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The model used to handle sorting of the Grid. This is generally not specified, and the built-in model supports
+  only single column sorting. The sort constraints (the column that is sorted, and ascending vs. descending) is
+  stored as persistent fields of the Grid component. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>sortModel</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.grid.GridSortModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be retained from the
+  org.apache.tapestry5.beaneditor.BeanModel.
+  Only these properties will be retained, and the properties will also be reordered. The names are
+  case-insensitive. This parameter is only used
+  when a default model is created automatically. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>include</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A Block to render instead of the table (and pager, etc.) when the source is empty. The default is simply the text
+  &quot;There is no data to display&quot;. This parameter is used to customize that message, possibly including components to
+  allow the user to create new objects. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>empty</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names indicating the order in which the properties should be presented. The
+  names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
+  order. This parameter is only used
+  when a default model is created automatically. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>reorder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Defines where block and label overrides are obtained from. By default, the Grid component provides block
+  overrides (from its block parameters). &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.PropertyOverrides</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be removed from the org.apache.tapestry5.beaneditor.BeanModel
+  .
+  The names are case-insensitive. This parameter is only used
+  when a default model is created automatically. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>exclude</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The model used to identify the properties to be presented and the order of presentation. The model may be
+  omitted, in which case a default model is generated from the first object in the data source (this implies that
+  the objects provided by the source are uniform). The model may be explicitly specified to override the default
+  behavior, say to reorder or rename columns or add additional columns. The add, include,
+  exclude and reorder
+  parameters are only applied to a default model, not an explicitly provided one. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.beaneditor.BeanModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Optional output parmeter used to identify the index of the column being rendered. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>columnIndex</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Defines where the pager (used to navigate within the &quot;pages&quot; of results) should be displayed: &quot;top&quot;, &quot;bottom&quot;,
+  &quot;both&quot; or &quot;none&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>pagerPosition</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.corelib.data.GridPagerPosition</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the Grid will be wrapped in an element that acts like a
+  org.apache.tapestry5.corelib.components.Zone; all the paging and sorting links will refresh the zone,
+  repainting
+  the entire grid within it, but leaving the rest of the page (outside the zone) unchanged. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>inPlace</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-seperated list of property names to be added to the org.apache.tapestry5.beaneditor.BeanModel.
+  Cells for added columns will be blank unless a cell override is provided. This parameter is only used
+  when a default model is created automatically. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>add</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The number of rows of data displayed on each page. If there are more rows than will fit, the Grid will divide up
+  the rows into &quot;pages&quot; and (normally) provide a pager to allow the user to navigate within the overall result
+  set. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>rowsPerPage</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Used to store the current object being rendered (for the current row). This is used when parameter blocks are
+  provided to override the default cell renderer for a particular column ... the components within the block can
+  use the property bound to the row parameter to know what they should render. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>row</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A version of org.apache.tapestry5.corelib.components.TextField, but rendered out as an input type=&quot;password&quot; element. Further, the output
+  value for a PasswordField is always blank.  When the value provided to the PasswordField is blank, it does not update
+  its property (care should be taken that the &quot;required&quot; validator not be used in that case).
+  
+  Includes the size attribute, if a org.apache.tapestry5.beaneditor.Width annotation is present on
+  the property bound to the value parameter.</description>
+     <name>passwordfield</name>
+     <tag-class>org.apache.tapestry5.corelib.components.PasswordField</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Defines how nulls on the server side, or sent from the client side, are treated. The selected strategy may
+  replace the nulls with some other value. The default strategy leaves nulls alone. Another built-in strategy,
+  zero, replaces nulls with the value 0. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : nullfieldstrategy
+ </description>
+       <name>nulls</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.NullFieldStrategy</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Provider of annotations used for some defaults. Annotation are usually provided in terms of the value parameter
+  (i.e., from the getter and/or setter bound to the value parameter). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>annotationProvider</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ioc.AnnotationProvider</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object which will perform translation between server-side and client-side representations. If not specified,
+  a value will usually be generated based on the type of the value parameter. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : translate
+ </description>
+       <name>translate</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldTranslator</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value to be read and updated. This is not necessarily a string, a translator may be provided to convert
+  between client side and server side representations. If not bound, a default binding is made to a property of the
+  container matching the component&apos;s id. If no such property exists, then you will see a runtime exception due to
+  the unbound value parameter. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object that will perform input validation (which occurs after translation). The validate binding prefix is
+  generally used to provide this object in a declarative fashion. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : validate
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldValidator</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A Zone is portion of the output page designed for easy dynamic updating via Ajax or other client-side effects. A
+  Zone renders out as a div element (or whatever is specified in the template) and may have content initially,
+  or may only get its content as a result of client side activity.
+  
+  Often, Zones are initially invisible, in which case the visible parameter may be set to false (it defaults to true).
+  
+  When a user clicks an org.apache.tapestry5.corelib.components.ActionLink whose zone parameter is set, the
+  corresponding client-side Tapestry.ZoneManager object is located. It will update the content of the Zone&apos;s
+  div and then invoke either a show method (if the div is not visible) or an update method (if the div is
+  visible). The show and update parameters are the names of functions attached to the Tapestry.ElementEffect
+  object. Likewise, a org.apache.tapestry5.corelib.components.Form component may also trigger an update of a
+  client-side Zone.
+  
+  The server side event handler can return a org.apache.tapestry5.Block or a component to render as the new
+  content on the client side. Often, re-rendering the Zone&apos;s  is useful. Multiple
+  client-side zones may be updated by returning a org.apache.tapestry5.ajax.MultiZoneUpdate.
+  
+  Renders informal parameters, adding CSS class &quot;t-zone&quot; and possibly, &quot;t-invisible&quot;.
+  
+  You will often want to specify the id parameter of the Zone, in addition to it&apos;s Tapestry component id; this &quot;locks
+  down&quot; the client-side id, so the same value is used even in later partial renders of the page (essential if the Zone
+  is nested inside another Zone). When you specify the client-side id, it is used exactly as provided (meaning that you
+  are responsible for ensuring that there will not be an id conflict even in the face of multiple partial renders of
+  the page). Failure to provide an explicit id results in a new, and non-predictable, id being generated for each
+  partial render, which will often result in client-side failures to locate the element to update when the Zone is
+  triggered.
+  
+  In some cases, you may want to know (on the server side) the client id of the zone that was updated; this is passed
+  as part of the Ajax request, as the org.apache.tapestry5.QueryParameterConstants#ZONE_ID parameter. An example use of this would
+  be to provide new content into a Zone that updates the same Zone, when the Zone&apos;s client-side id is dynamically
+  allocated (rather than statically defined). In most cases, however, the programmer is responsible for assigning a
+  specific client-side id, via the id parameter.
+  
+  A Zone starts and stops a org.apache.tapestry5.services.Heartbeat when it renders (both normally, and when re-rendering).
+  
+  After the client-side content is updated, a client-side event is fired on the zone&apos;s element. The constant
+  Tapestry.ZONE_UPDATED_EVENT can be used to listen to the event.</description>
+     <name>zone</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Zone</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If bound, then the id attribute of the rendered element will be this exact value. If not bound, then a unique id
+  is generated for the element. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>id</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true (the default) then the zone will render normally. If false, then the &quot;t-invisible&quot; CSS class is added,
+  which will make the zone initially invisible. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>visible</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make the Zone&apos;s
+  div visible before being updated. If not specified, then the basic &quot;show&quot; method is used. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>show</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The element name to render for the zone; this defaults to the element actually used in the template, or &quot;div&quot; if
+  no specific element was specified. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>elementName</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Name of a function on the client-side Tapestry.ElementEffect object that is invoked after the Zone&apos;s content has
+  been updated. If not specified, then the basic &quot;highlight&quot; method is used, which performs a classic &quot;yellow fade&quot;
+  to indicate to the user that and update has taken place. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>update</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Generates a label element for a particular field.
+  
+  A Label will render its body, if it has one. However, in most cases it will not have a body, and will render its
+   as it&apos;s body. Remember, however, that it is the
+  field label that will be used in any error messages. The Label component allows for client- and server-side
+  validation error decorations.</description>
+     <name>label</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Label</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, then the body of the label element (in the template) is ignored. This is used when a designer places a
+  value inside the label element for WYSIWYG purposes, but it should be replaced with a different
+  (probably, localized) value at runtime. The default is false, so a body will be used if present and the field&apos;s
+  label will only be used if the body is empty or blank. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>ignoreBody</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The for parameter is used to identify the org.apache.tapestry5.Field linked to this label (it is named this way because it
+  results in the for attribute of the label element). &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : component
+ </description>
+       <name>for</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Field</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A radio button (i.e., input type=&quot;radio&quot;). Radio buttons must operate within a
+  org.apache.tapestry5.RadioContainer (normally, the org.apache.tapestry5.corelib.components.RadioGroup component).
+  
+  If the value parameter is not bound, then the default value is a property of the container component whose name
+  matches the Radio component&apos;s id.</description>
+     <name>radio</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Radio</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value associated with this radio button. This is used to determine which radio button will be selected when
+  the page is rendered, and also becomes the value assigned when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Renders out the column headers for the grid, including links (where appropriate) to control column sorting.</description>
+     <name>gridcolumns</name>
+     <tag-class>org.apache.tapestry5.corelib.components.GridColumns</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Where to look for informal parameter Blocks used to override column headers.  The default is to look for such
+  overrides in the GridColumns component itself, but this is usually overridden. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>overrides</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.PropertyOverrides</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If not null, then each link is output as a link to update the specified zone. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>zone</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Optional output parameter that stores the current column index. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>index</name>
+       <required>false</required>
+       <deferred-value>
+         <type>int</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object that provides access to bean and data models, which is typically the enclosing Grid component. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>gridModel</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.grid.GridModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the CSS class on each TH element will be omitted, which can reduce the amount of output
+  from the component overall by a considerable amount. Leave this as false, the default, when you are leveraging
+  the CSS to customize the look and feel of particular columns. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>lean</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Presents validation errors of a single field. Must be enclosed by a
+  org.apache.tapestry5.corelib.components.Form component.</description>
+     <name>error</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Error</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The for parameter is used to identify the org.apache.tapestry5.Field to present errors of. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : component
+ </description>
+       <name>for</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Field</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The CSS class for the div element rendered by the component. The default value is &quot;t-error-single&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>class</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>TextArea component corresponds to a textarea element. The value parameter is almost always bound to a string,
+  but this is not an absolute requirement.
+  
+  Includes the cols attribute, if a org.apache.tapestry5.beaneditor.Width annotation is present on
+  the property bound to the value parameter.</description>
+     <name>textarea</name>
+     <tag-class>org.apache.tapestry5.corelib.components.TextArea</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
+  disabled field ignores any value in the request when the form is submitted. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The user presentable label for the field. If not provided, a reasonable label is generated from the component&apos;s
+  id, first by looking for a message key named &quot;id-label&quot; (substituting the component&apos;s actual id), then by
+  converting the actual id to a presentable string (for example, &quot;userId&quot; to &quot;User Id&quot;). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>label</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
+  times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
+  clientId property. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Defines how nulls on the server side, or sent from the client side, are treated. The selected strategy may
+  replace the nulls with some other value. The default strategy leaves nulls alone. Another built-in strategy,
+  zero, replaces nulls with the value 0. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : nullfieldstrategy
+ </description>
+       <name>nulls</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.NullFieldStrategy</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Provider of annotations used for some defaults. Annotation are usually provided in terms of the value parameter
+  (i.e., from the getter and/or setter bound to the value parameter). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>annotationProvider</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.ioc.AnnotationProvider</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object which will perform translation between server-side and client-side representations. If not specified,
+  a value will usually be generated based on the type of the value parameter. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : translate
+ </description>
+       <name>translate</name>
+       <required>true</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldTranslator</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The value to be read and updated. This is not necessarily a string, a translator may be provided to convert
+  between client side and server side representations. If not bound, a default binding is made to a property of the
+  container matching the component&apos;s id. If no such property exists, then you will see a runtime exception due to
+  the unbound value parameter. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>value</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object that will perform input validation (which occurs after translation). The validate binding prefix is
+  generally used to provide this object in a declarative fashion. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : validate
+ </description>
+       <name>validate</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.FieldValidator</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Renders an arbitrary element including informal parameters.</description>
+     <name>any</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Any</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The desired client id, which defaults to the components id. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>clientId</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>No description found &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>element</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Generates a render request link to some other page in the application. If an activation context is supplied (as the
+  context parameter), then the context values will be encoded into the URL. If no context is supplied, then the target
+  page itself will supply the context via a passivate event.
+  
+  Pages are not required to have an activation context. When a page does have an activation context, the value
+  typically represents the identity of some object displayed or otherwise manipulated by the page.</description>
+     <name>pagelink</name>
+     <tag-class>org.apache.tapestry5.corelib.components.PageLink</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If true, then then no link element is rendered (and no informal parameters as well). The body is, however, still
+  rendered. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>disabled</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>An anchor value to append to the generated URL (the hash separator will be added automatically). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>anchor</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The logical name of the page to link to. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>page</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If provided, this is the activation context for the target page (the information will be encoded into the URL).
+  If not provided, then the target page will provide its own activation context. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A way to add new content to an existing Form. The FormInjector emulates its tag from the template (or uses a
+  div). When triggered, new content is obtained from the application and is injected before or after the
+  element.
+  
+  On the client side, a new function, trigger(), is added to the element. Invoking this client-side function will
+  trigger the FormInjector; a request is sent to the server, new content is generated, and the new content is placed
+  before or after (per configuration) the existing FormInjector element.</description>
+     <name>forminjector</name>
+     <tag-class>org.apache.tapestry5.corelib.components.FormInjector</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make added content
+  visible. Leaving as null uses the default function, &quot;highlight&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>show</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The context for the link (optional parameter). This list of values will be converted into strings and included in
+  the URI. The strings will be coerced back to whatever their values are and made available to event handler
+  methods. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The element name to render, which is normally the element name used to represent the FormInjector component in
+  the template, or &quot;div&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>element</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>No description found &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>position</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.corelib.data.InsertPosition</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>Integral part of the default org.apache.tapestry5.corelib.pages.ExceptionReport page used to break apart and
+  display the properties of the exception.</description>
+     <name>exceptiondisplay</name>
+     <tag-class>org.apache.tapestry5.corelib.components.ExceptionDisplay</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Exception to report. &lt;br/&gt; Allow null : false
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>exception</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Throwable</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A FormFragment is a portion of a Form that may be selectively displayed. Form elements inside a FormFragment will
+  automatically bypass validation when the fragment is invisible. The trick is to also bypass server-side form
+  processing for such fields when the form is submitted; client-side logic &quot;removes&quot; the
+  form data for the fragment if it is invisible when the
+  form
+  is submitted; alternately, client-side logic can simply remove the form fragment element (including its visible and
+  hidden fields) to prevent server-side processing.
+  
+  The client-side element will now listen to two new event defined by client-side constants:
+  
+  Tapestry.CHANGE_VISIBILITY_EVENT
+  Change the visiblity as per the event memo&apos;s visibility property. When the visiblity changes, the correct
+  animation is executed.
+  Tapestry.HIDE_AND_REMOVE_EVENT
+  Hides the element, then removes it from the DOM entirely.
+  </description>
+     <name>formfragment</name>
+     <tag-class>org.apache.tapestry5.corelib.components.FormFragment</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>If bound, then the id attribute of the rendered element will be this exact value. If not bound, then a unique id
+  is generated for the element. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>id</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make the fragment visible.
+  If not specified, then the default &quot;slidedown&quot; function is used. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>show</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Determines if the fragment is initially visible or initially invisible (the default). This is only used when
+  rendering; when the form is submitted, the hidden field value is used to determine whether the elements within
+  the fragment should be processed (or ignored if still invisible). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>visible</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>Name of a function on the client-side Tapestry.ElementEffect object that is invoked when the fragment is to be
+  hidden. If not specified, the default &quot;slideup&quot; function is used. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>hide</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The element to render for each iteration of the loop. The default comes from the template, or &quot;div&quot; if the
+  template did not specific an element. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>element</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If true, then the fragment submits the values from fields it contains even if the fragment is not
+  visible.
+  The default is to omit values from fields when the enclosing fragment is non visible. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>alwaysSubmit</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A component used to implement the progressive
+  enhancement web design strategy; the component renders itself with a
+  simplified initial content (i.e., &quot;loading
+  ...&quot;) and an Ajax request then supplies the component&apos;s true body. This
+  results in much faster page loads. You can
+  even nest these!
+  
+  The component simply does not render its body on initial render. On the subsequent action event request, it fires a
+  org.apache.tapestry5.EventConstants#PROGRESSIVE_DISPLAY event to inform the container about the (optional)
+  event context. The event handler method may return a renderable object; if not then the component&apos;s body is rendered
+  as the partial markup response.</description>
+     <name>progressivedisplay</name>
+     <tag-class>org.apache.tapestry5.corelib.components.ProgressiveDisplay</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>Name of a function on the client-side Tapestry.ElementEffect object that
+  is invoked after the elements&apos;s body
+  content has been updated. If not specified, then the basic &quot;highlight&quot;
+  method is used, which performs a classic
+  &quot;yellow fade&quot; to indicate to the user that and update has taken place. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>update</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The initial content to display until the real content arrives. Defaults
+  to &quot;Loading ...&quot; and an Ajax activity
+  icon. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>initial</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.Block</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If provided, this is the event context, which will be provided via the
+  event. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>context</name>
+       <required>false</required>
+       <deferred-value>
+         <type>[Ljava.lang.Object;</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A component that does not do any rendering of its own, but will delegate to some other object that can do rendering.
+  This other object may be a component or a org.apache.tapestry5.Block (among other things).
+  
+  This component may also be used to create inline components. For each informal parameter the value will be stored as a 
+  render variable. To create an inline component, create a block
+  and use Delegate multiple times in the template to render the block passing parameters to Delegate. In the block body
+  reference the render variables using the &quot;var:&quot; binding prefix and the name of the parameter.
+  
+  Note that the default binding prefix for parameter values is &quot;literal&quot;.</description>
+     <name>delegate</name>
+     <tag-class>org.apache.tapestry5.corelib.components.Delegate</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>The object which will be rendered in place of the Delegate component. This is typically a specific component
+  instance, or a org.apache.tapestry5.Block. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>to</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+   <tag>
+     <description>A component that creates an entire form editing the properties of a particular bean. Inspired by Trails and BeanForm (both
+  for Tapestry 4). Generates a simple UI for editing the properties of a JavaBean, with the flavor of UI for each
+  property (text field, checkbox, drop down list) determined from the property type (or by other means, such as an
+  annotation), and the order and validation for the properties determined from annotations on the property&apos;s getter and
+  setter methods.
+  
+  You may add block parameters to the component; when the name matches (case insensitive) the name of a property, then
+  the corresponding Block is renderered, rather than any of the built in property editor blocks. This allows you to
+  override specific properties with your own customized UI, for cases where the default UI is insufficient, or no
+  built-in editor type is appropriate.
+  
+  BeanEditForm contains a org.apache.tapestry5.corelib.components.Form component and will trigger all the
+  events of a Form.</description>
+     <name>beaneditform</name>
+     <tag-class>org.apache.tapestry5.corelib.components.BeanEditForm</tag-class>
+     <body-content>JSP</body-content>
+     <attribute>
+       <description>A comma-separated list of property names indicating the order in which the properties should be presented. The
+  names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
+  orde. Only used
+  when a default model is created automatically. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>reorder</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be removed from the org.apache.tapestry5.beaneditor.BeanModel
+  (only used
+  when a default model is created automatically).
+  The names are case-insensitive. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>exclude</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The object to be edited. This will be read when the component renders and updated when the form for the component
+  is submitted. Typically, the container will listen for a &quot;prepare&quot; event, in order to ensure that a non-null
+  value is ready to be read or updated. Often, the BeanEditForm can create the object as needed (assuming a public,
+  no arguments constructor). The object property defaults to a property with the same name as the component id. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>object</name>
+       <required>true</required>
+       <deferred-value>
+         <type>java.lang.Object</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The text label for the submit button of the form, by default &quot;Create/Update&quot;. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>submitLabel</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>If set to true, then the form will include an additional button after the submit button labeled &quot;Cancel&quot;.
+  The cancel button will submit the form, bypassing client-side validation. The BeanEditForm will fire a
+  org.apache.tapestry5.EventConstants#CANCELED event (before the form&apos;s org.apache.tapestry5.EventConstants#VALIDATE event). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>cancel</name>
+       <required>false</required>
+       <deferred-value>
+         <type>boolean</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>The model that identifies the parameters to be edited, their order, and every other aspect. If not specified, a
+  default bean model will be created from the type of the object bound to the object parameter. The add, include,
+  exclude and reorder parameters are only applied to a default model, not an explicitly provided one. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : prop
+ </description>
+       <name>model</name>
+       <required>false</required>
+       <deferred-value>
+         <type>org.apache.tapestry5.beaneditor.BeanModel</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be retained from the
+  org.apache.tapestry5.beaneditor.BeanModel (only used
+  when a default model is created automatically).
+  Only these properties will be retained, and the properties will also be reordered. The names are
+  case-insensitive. &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>include</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+     <attribute>
+       <description>A comma-separated list of property names to be added to the org.apache.tapestry5.beaneditor.BeanModel
+  (only used
+  when a default model is created automatically). &lt;br/&gt; Allow null : true
+  &lt;br/&gt; Default prefix : literal
+ </description>
+       <name>add</name>
+       <required>false</required>
+       <deferred-value>
+         <type>java.lang.String</type>
+       </deferred-value>
+     </attribute>
+   </tag>
+ </taglib>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org