From d2ca42f427b3eda09c01a7e340a6f7b9e32ee3fd Mon Sep 17 00:00:00 2001
From: Leif Johansson <leifj@sunet.se>
Date: Thu, 3 Nov 2011 12:23:00 +0100
Subject: new tlds

---
 src/main/webapp/WEB-INF/tlds/struts-bean.tld  | 1476 +++++++++++----
 src/main/webapp/WEB-INF/tlds/struts-logic.tld | 2433 +++++++++++++++++++------
 2 files changed, 3023 insertions(+), 886 deletions(-)

(limited to 'src/main/webapp/WEB-INF/tlds')

diff --git a/src/main/webapp/WEB-INF/tlds/struts-bean.tld b/src/main/webapp/WEB-INF/tlds/struts-bean.tld
index d8e4425..7e95a46 100755
--- a/src/main/webapp/WEB-INF/tlds/struts-bean.tld
+++ b/src/main/webapp/WEB-INF/tlds/struts-bean.tld
@@ -1,346 +1,1152 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+    $Id: struts-bean.tld 481833 2006-12-03 17:32:52Z niallp $
 
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!DOCTYPE taglib
+        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+    <tlib-version>1.3</tlib-version>
+    <jsp-version>1.2</jsp-version>
+    <short-name>bean</short-name>
+    <uri>http://struts.apache.org/tags-bean</uri>
+    <description>
+        <![CDATA[
+  <p><strong>Note:  Some of the features in this taglib are also
+  available in the <a href="http://java.sun.com/products/jsp/jstl/">JavaServer Pages Standard Tag Library (JSTL)</a>.
+  The Struts team encourages the use of the standard tags over the Struts
+  specific tags when possible.</strong></p>
 
+  <p>This tag library contains tags useful in accessing beans and their
+  properties, as well as defining new beans (based on these accesses)
+  that are accessible to the remainder of the page via scripting variables
+  and page scope attributes.  Convenient mechanisms to create new beans
+  based on the value of request cookies, headers, and parameters are also
+  provided.</p>
 
+  <p>Many of the tags in this tag library will throw a
+  <code>JspException</code> at runtime when they are utilized incorrectly
+  (such as when you specify an invalid combination of tag attributes).  JSP
+  allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
+  directive.  If you wish to process the actual exception that caused the
+  problem, it is passed to the error page as a request attribute under key
+  <code>org.apache.struts.action.EXCEPTION</code>.</p>
 
+  ]]>
+    </description>
+    <tag>
+        <name>cookie</name>
+        <tag-class>org.apache.struts.taglib.bean.CookieTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.CookieTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    request cookie.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified request cookie (as a single
+    value or multiple values, depending on the <code>multiple</code> attribute),
+    and define the result as a page scope attribute of type <code>Cookie</code>
+    (if <code>multiple</code> is not specified) or <code>Cookie[]</code>
+    (if <code>multiple</code> is specified).</p>
 
+    <p>If no cookie with the specified name can be located, and no default
+    value is specified, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified request cookie.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>multiple</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, causes all
+      matching cookies to be accumulated and stored into a bean of type
+      <code>Cookie[]</code>.  If not specified, the first value for the
+      specified cookie will be retrieved as a value of type
+      <code>Cookie</code>.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the request cookie whose value, or values,
+      is to be retrieved.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The default cookie value to return if no cookie with the
+      specified name was included in this request.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>define</name>
+        <tag-class>org.apache.struts.taglib.bean.DefineTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.DefineTei</tei-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    bean property.
+    </strong></p>
+          
+    <p>Create a new attribute (in the scope specified by the
+    <code>toScope</code> property, if any), and a corresponding scripting
+    variable, both of which are named by the value of the <code>id</code>
+    attribute.  The corresponding value to which this new attribute (and
+    scripting variable) is set are specified via use of exactly one of the
+    following approaches (trying to use more than one will result in a
+    JspException being thrown):</p>
+    <ul>
+    <li>Specify a <code>name</code> attribute (plus optional
+        <code>property</code> and <code>scope</code> attributes) -
+        The created attribute and scripting variable will be of the type of the
+        retrieved JavaBean property, unless it is a Java primitive type,
+        in which case it will be wrapped in the appropriate wrapper class
+        (i.e. int is wrapped by java.lang.Integer).</li>
+    <li>Specify a <code>value</code> attribute - The created attribute and
+        scripting variable will be of type <code>java.lang.String</code>,
+        set to the value of this attribute.</li>
+    <li>Specify nested body content - The created attribute and scripting
+        variable will be of type <code>java.lang.String</code>, set to
+        the value of the nested body content.</li>
+    </ul>
 
+    <p>If a problem occurs while retrieving the specified bean property, a
+    request time exception will be thrown.</p>
 
-<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
-<taglib>
-<tlibversion>1.0</tlibversion>
-<jspversion>1.1</jspversion>
-<shortname>bean</shortname>
-<uri>http://jakarta.apache.org/struts/tags-bean-1.0.2</uri>
-<tag>
-<name>cookie</name>
-<tagclass>org.apache.struts.taglib.bean.CookieTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.CookieTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>multiple</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>define</name>
-<tagclass>org.apache.struts.taglib.bean.DefineTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.DefineTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>toScope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>type</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>header</name>
-<tagclass>org.apache.struts.taglib.bean.HeaderTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.HeaderTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>multiple</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>include</name>
-<tagclass>org.apache.struts.taglib.bean.IncludeTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.IncludeTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>anchor</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>href</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>transaction</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>message</name>
-<tagclass>org.apache.struts.taglib.bean.MessageTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>arg0</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg1</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg2</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg3</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>arg4</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>bundle</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>key</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>locale</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>page</name>
-<tagclass>org.apache.struts.taglib.bean.PageTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.PageTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>parameter</name>
-<tagclass>org.apache.struts.taglib.bean.ParameterTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.ParameterTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>multiple</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>resource</name>
-<tagclass>org.apache.struts.taglib.bean.ResourceTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.ResourceTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>input</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>size</name>
-<tagclass>org.apache.struts.taglib.bean.SizeTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.SizeTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>collection</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>struts</name>
-<tagclass>org.apache.struts.taglib.bean.StrutsTag</tagclass>
-<teiclass>org.apache.struts.taglib.bean.StrutsTei</teiclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>formBean</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>mapping</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>write</name>
-<tagclass>org.apache.struts.taglib.bean.WriteTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>filter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>ignore</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
+    <p>The <code>&lt;bean:define&gt;</code> tag differs from
+    <code>&lt;jsp:useBean&gt;</code> in several ways, including:</p>
+    <ul>
+    <li>Unconditionally creates (or replaces) a bean under the
+        specified identifier.</li>
+    <li>Can create a bean with the value returned by a property getter
+        of a different bean (including properties referenced with a
+        nested and/or indexed property name).</li>
+    <li>Can create a bean whose contents is a literal string (or the result
+        of a runtime expression) specified by the <code>value</code>
+        attribute.</li>
+    <li>Does not support nested content (such as
+        <code>&lt;jsp:setProperty&gt;</code> tags) that are only executed
+        if a bean was actually created.</li>
+    </ul>
+
+    <p><strong>USAGE NOTE</strong> - There is a restriction in the JSP 1.1
+    Specification that disallows using the same value for an <code>id</code>
+    attribute more than once in a single JSP page.  Therefore, you will not
+    be able to use <code>&lt;bean:define&gt;</code> for the same bean
+    name more than once in a single page.</p>
+
+    <p><strong>USAGE NOTE</strong> - If you use another tag to create the
+    body content (e.g. bean:write), that tag must return a non-empty String.
+    An empty String equates to an empty body or a null String, and a new
+    scripting variable cannot be defined as null. Your bean must return a
+    non-empty String, or the define tag must be wrapped within a logic tag
+    to test for an empty or null value.</p>
+
+    <p><strong>USAGE NOTE</strong> - You cannot use bean:define to <strong>instantiate</strong>
+    a DynaActionForm (type="org.apache.struts.action.DynaActionForm") with
+    the properties specified in the struts-config. The mechanics of creating
+    the dyna-properties is complex and cannot be handled by a no-argument
+    constructor. If you need to create an ActionForm this way, you must use
+    a conventional ActionForm.
+    </p>
+
+    <p>See the Bean Developer's Guide section on
+    <a href="../api/org/apache/struts/taglib/bean/package-summary.html#doc.Creation">
+    bean creation</a> for more information about these differences, as well
+    as alternative approaches to introducing beans into a JSP page.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified property.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the attribute name of the bean whose property is accessed
+      to define a new page scope attribute (if <code>property</code> is also
+      specified) or the attribute name of the bean that is duplicated with
+      the new reference created by this tag (if <code>property</code> is not
+      also specified).  This attribute is required unless you specify
+      a <code>value</code> attribute or nested body content.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the property to be accessed on the bean
+      specified by <code>name</code>.  This value may be a simple, indexed,
+      or nested property reference expression.  If not specified, the bean
+      identified by <code>name</code> is given a new reference identified by
+      <code>id</code>.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope searched to retrieve the bean specified
+      by <code>name</code>.  If not specified, the default rules applied by
+      <code>PageContext.findAttribute()</code> are applied.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>toScope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope into which the newly defined bean will
+      be created.  If not specified, the bean will be created in
+      <code>page</code> scope.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>type</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+        <p>Specifies the fully qualified class name of the value to be exposed
+        as the <code>id</code> attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The <code>java.lang.String</code> value to which the exposed bean
+      should be set.  This attribute is required unless you specify the
+      <code>name</code> attribute or nested body content.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>header</name>
+        <tag-class>org.apache.struts.taglib.bean.HeaderTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.HeaderTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    request header.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified request header (as a single
+    value or multiple values, depending on the <code>multiple</code> attribute),
+    and define the result as a page scope attribute of type <code>String</code>
+    (if <code>multiple</code> is not specified) or <code>String[]</code>
+    (if <code>multiple</code> is specified).</p>
+
+    <p>If no header with the specified name can be located, and no default
+    value is specified, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified request header.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>multiple</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, causes a call
+      to <code>HttpServletRequest.getHeaders()</code> and a definition of the
+      result as a bean of type <code>String[]</code>.  Otherwise,
+      <code>HttpServletRequest.getHeader()</code> will be called, and a
+      definition of the result as a bean of type <code>String</code>
+      will be performed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the request header whose value, or values,
+      is to be retrieved.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The default header value to return if no header with the
+      specified name was included in this request.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>include</name>
+        <tag-class>org.apache.struts.taglib.bean.IncludeTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.IncludeTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Load the response from a dynamic application request and make it available
+    as a bean.
+    </strong></p>
+          
+    <p>Perform an internal dispatch to the specified application component
+    (or external URL)
+    and make the response data from that request available as a bean of
+    type <code>String</code>.  This tag has a function similar to that of
+    the standard <code>&lt;jsp:include&gt;</code> tag, except that the
+    response data is stored in a page scope attribute instead of being
+    written to the output stream.  If the current request is part of a
+    session, the generated request for the include will also include the
+    session identifier (and thus be part of the same session).</p>
+
+    <p>The URL used to access the specified application component is
+    calculated based on which of the following attributes you specify
+    (you must specify exactly one of them):</p>
+    <ul>
+    <li><em>forward</em> - Use the value of this attribute as the name
+        of a global <code>ActionForward</code> to be looked up, and
+        use the module-relative or context-relative URI found there.</li>
+    <li><em>href</em> - Use the value of this attribute unchanged (since
+        this might link to a resource external to the application, the
+        session identifier is <strong>not</strong> included.</li>
+    <li><em>page</em> - Use the value of this attribute as an
+        module-relative URI to the desired resource.</li>
+    </ul>
+    ]]>
+        </description>
+        <attribute>
+            <name>anchor</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Optional anchor tag ("#xxx") to be added to the generated
+      hyperlink.  Specify this value <strong>without</strong> any
+      "#" character.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>forward</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Logical name of a global <code>ActionForward</code> that contains
+      the actual content-relative URI of the resource to be included.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>href</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Absolute URL (including the appropriate protocol prefix such as
+      "http:") of the resource to be included.  Because this URL could be
+      external to the current web application, the session identifier will
+      <strong>not</strong> be included in the request.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified web application resource.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>page</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Module-relative URI (starting with a '/') of the web application
+      resource to be included.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>transaction</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+        <p>Set to <code>true</code> if you want the current
+        transaction control token included in the generated
+        URL for this include.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>message</name>
+        <tag-class>org.apache.struts.taglib.bean.MessageTag</tag-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Render an internationalized message string to the response.
+    </strong></p>
+          
+    <p>Retrieves an internationalized message for the specified locale,
+    using the specified message key, and write it to the output stream.
+    Up to five parametric replacements (such as "{0}") may be specified.</p>
+
+    <p>The message key may be specified directly, using the <code>key</code>
+    attribute, or indirectly, using the <code>name</code> and
+    <code>property</code> attributes to obtain it from a bean.</p>
+    
+    <p>
+    <strong>JSTL</strong>:  The equivalent JSTL tag is &lt;fmt:message&gt;.  For example,
+    <br/>
+    <code>
+    	&lt;fmt:message key="my.msg.key"&gt;
+    	  &lt;fmt:param value="replacement text"/&gt;
+    	&lt;/fmt:message&gt;
+    </code>
+    </p>
+    ]]>
+        </description>
+        <attribute>
+            <name>arg0</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>First parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg1</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Second parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg2</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Third parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg3</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Fourth parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg4</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Fifth parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>bundle</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the application scope bean under which the
+      <code>MessageResources</code> object containing our messages
+      is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>key</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The message key of the requested message, which must have
+      a corresponding value in the message resources. If not specified,
+      the key is obtained from the <code>name</code> and
+      <code>property</code> attributes.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>locale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the session scope bean under which our currently
+      selected <code>Locale</code> object is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the attribute name of the bean whose property is accessed
+      to retrieve the value specified by <code>property</code> (if
+      specified).  If <code>property</code> is not specified, the value of
+      this bean itself will be used as the message resource key.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the property to be accessed on the bean
+      specified by <code>name</code>.  This value may be a simple, indexed,
+      or nested property reference expression.  If not specified, the value
+      of the bean identified by <code>name</code> will itself be used as the
+      message resource key.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope searched to retrieve the bean specified
+      by <code>name</code>.  If not specified, the default rules applied by
+      <code>PageContext.findAttribute()</code> are applied.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>page</name>
+        <tag-class>org.apache.struts.taglib.bean.PageTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.PageTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Expose a specified item from the page context as a bean.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified item from the page context
+    for this page, and define it as a scripting variable, and a page scope
+    attribute accessible to the remainder of the current page.</p>
+
+    <p>If a problem occurs while retrieving the specified configuration
+    object, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated
+      page scope attribute) that will be made available with the value of
+      the specified page context property.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Name of the property from our page context to be retrieved and
+      exposed.  Must be one of <code>application</code>, <code>config</code>,
+      <code>request</code>, <code>response</code>, or <code>session</code>.
+      </p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>parameter</name>
+        <tag-class>org.apache.struts.taglib.bean.ParameterTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.ParameterTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    request parameter.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified request parameter (as a single
+    value or multiple values, depending on the <code>multiple</code> attribute),
+    and define the result as a page scope attribute of type <code>String</code>
+    (if <code>multiple</code> is not specified) or <code>String[]</code>
+    (if <code>multiple</code> is specified).</p>
+
+    <p>If no request parameter with the specified name can be located, and
+    no default value is specified, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified request parameter.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>multiple</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, causes a call
+      to <code>ServletRequest.getParameterValues()</code> and a definition of
+      the result as a bean of type <code>String[]</code>.  Otherwise,
+      <code>ServletRequest.getParameter()</code> will be called, and a
+      definition of the result as a bean of type <code>String</code>
+      will be performed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the request parameter whose value, or values,
+      is to be retrieved.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The default parameter value to return if no parameter with the
+      specified name was included in this request.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>resource</name>
+        <tag-class>org.apache.struts.taglib.bean.ResourceTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.ResourceTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Load a web application resource and make it available as a bean.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified web application resource, and make
+    it available as either a <code>InputStream</code> or a <code>String</code>,
+    depending on the value of the <code>input</code> attribute.</p>
+
+    <p>If a problem occurs while retrieving the specified resource, a
+    request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified web application resource.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>input</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, the resource
+      will be made available as an <code>InputStream</code>.  If this
+      attribute is not specified, the resource will be made available
+      as a <code>String</code>.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Module-relative name (starting with a '/') of the web application
+      resource to be loaded and made available.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>size</name>
+        <tag-class>org.apache.struts.taglib.bean.SizeTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.SizeTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a bean containing the number of elements in a Collection or Map.
+    </strong></p>
+          
+    <p>Given a reference to an array, Collection or Map, creates a new bean, of
+    type <code>java.lang.Integer</code>, whose value is the number of elements
+    in that collection.  You can specify the collection to be counted in any
+    one of the following ways:</p>
+    <ul>
+    <li>As a runtime expression specified as the value of the
+        <code>collection</code> attribute.</li>
+    <li>As a JSP bean specified by the <code>name</code> attribute.</li>
+    <li>As the property, specified by the <code>property</code> attribute,
+        of the JSP bean specified by the <code>name</code> attribute.</li>
+    </ul>
+    ]]>
+        </description>
+        <attribute>
+            <name>collection</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+            <description>
+                <![CDATA[
+      <p>A runtime expression that evaluates to an array, a Collection, or
+      a Map.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of a page scope JSP bean, of type
+      <code>java.lang.Integer</code>, that will be created to contain the
+      size of the underlying collection being counted.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the JSP bean (optionally constrained to the scope
+      specified by the <code>scope</code> attribute) that contains the
+      collection to be counted (if <code>property</code> is not specified),
+      or whose property getter is called to return the collection to be
+      counted (if <code>property</code> is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the property, of the bean specified by the
+      <code>name</code> attribute, whose getter method will return the
+      collection to be counted.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the JSP bean specified
+      by the <code>name</code> attribute.  If not specified, the available
+      scopes are searched in ascending sequence.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>struts</name>
+        <tag-class>org.apache.struts.taglib.bean.StrutsTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.StrutsTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Expose a named Struts internal configuration object as a bean.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified Struts internal configuration
+    object, and define it as a scripting variable and as a page scope
+    attribute accessible to the remainder of the current page.  You must
+    specify exactly one of the <code>formBean</code>, <code>forward</code>,
+    and <code>mapping</code> attributes to select the configuration object
+    to be exposed.</p>
+
+    <p>If a problem occurs while retrieving the specified configuration
+    object, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated
+      page scope attribute) that will be made available with the value of
+      the specified Struts internal configuration object.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>formBean</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the Struts <code>ActionFormBean</code>
+      definition object to be exposed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>forward</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the global Struts <code>ActionForward</code>
+      definition object to be exposed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>mapping</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the matching path of the Struts <code>ActionMapping</code>
+      definition object to be exposed.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>write</name>
+        <tag-class>org.apache.struts.taglib.bean.WriteTag</tag-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Render the value of the specified bean property to the current
+    JspWriter.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified bean property, and render it to the
+    current JspWriter as a String by the ways:</p>
+     <ul>
+     <li>If <code>format</code> attribute exists then value will be formatted on base of format
+     string from <code>format</code> attribute and default system locale.</li>
+     <li>If in resources exists format string for value data type (view <code>format</code>
+     attribute description) then value will be formatted on base of format string
+     from resources. Resources bundle and target locale can be specified with
+     <code>bundle</code> and <code>locale</code> attributes. If nothing specified then
+     default resource bundle and current user locale will be used.</li>
+     <li>If there is a PropertyEditor configured for the property value's class, the
+     <code>getAsText()</code> method will be called.</li>
+     <li>Otherwise, the usual <code>toString()</code> conversions will be applied.</li>
+     </ul>
+    <p>When a format string is provided, numeric values are formatted using the
+    <code>java.text.DecimalFormat</code> class; if the format string came from
+    a resource, the <code>applyLocalisedPattern()</code> method is used, and
+    <code>applyPattern()</code> is used otherwise. Dates are formatted using
+    the <code>SimpleDateFormat</code> class. For details of the specific format
+    patterns, please see the Javadocs for those classes.</p>
+    <p>If a problem occurs while retrieving the specified bean property, a
+    request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>bundle</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the application scope bean under which the
+      <code>MessageResources</code> object containing our messages
+      is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>filter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+      <p>If this attribute is set to <code>true</code>, the rendered property
+      value will be filtered for characters that are sensitive in HTML, and any
+      such characters will be replaced by their entity equivalents.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>format</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the format string to use to convert bean or property value
+      to the <code>String</code>. If nothing specified, then default format
+      string for value data type will be searched in message resources by
+      according key.</p>
+<!-- move to developers guide
+      <table>
+       <tr>
+           <td>Key to search format string</td>
+           <td>Data types</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.int</td>
+           <td>java.lang.Byte, java.lang.Short, java.lang.Integer, java.lang.Long,
+               java.math.BigInteger</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.float</td>
+           <td>java.lang.Float, java.lang.Double, java.math.BigDecimal</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.sql.timestamp</td>
+           <td>java.sql.Timestamp</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.sql.date</td>
+           <td>java.sql.Date</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.sql.time</td>
+           <td>java.sql.Time</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.date</td>
+           <td>java.util.Date</td>
+       </tr>
+      </table>
+      <p>Default format strings in resources can be written as - <br />
+        <pre>
+                org.apache.struts.taglib.bean.format.int=######
+                org.apache.struts.taglib.bean.format.float=######,####
+                org.apache.struts.taglib.bean.format.sql.timestamp=hh 'o''clock' a, zzzz
+                org.apache.struts.taglib.bean.format.sql.date=EEE, MMM d, ''yy
+                org.apache.struts.taglib.bean.format.sql.time=h:mm a
+                org.apache.struts.taglib.bean.format.date=hh 'o''clock' a, zzzz
+        </pre>
+        <br />values for resource file entries are standart Java format strings for
+        date, time and number values.</p>
+-->
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>formatKey</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the key to search format string in application resources.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>ignore</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+      <p>If this attribute is set to <code>true</code>, and the bean specified
+      by the <code>name</code> and <code>scope</code> attributes does not
+      exist, simply return without writing anything.  If this attribute is
+      set to <code>false</code>, a runtime exception to be thrown,
+      consistent with the other tags in this tag library.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>locale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+        <p>The name of the session scope bean under which our currently
+        selected <code>Locale</code> object is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the attribute name of the bean whose property is accessed
+      to retrieve the value specified by <code>property</code> (if
+      specified).  If <code>property</code> is not specified, the value of
+      this bean itself will be rendered.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the property to be accessed on the bean
+      specified by <code>name</code>.  This value may be a simple, indexed,
+      or nested property reference expression.  If not specified, the bean
+      identified by <code>name</code> will itself be rendered.  If the
+      specified property returns null, no output will be rendered.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope searched to retrieve the bean specified
+      by <code>name</code>.  If not specified, the default rules applied by
+      <code>PageContext.findAttribute()</code> are applied.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
 </taglib>
 
 
diff --git a/src/main/webapp/WEB-INF/tlds/struts-logic.tld b/src/main/webapp/WEB-INF/tlds/struts-logic.tld
index bf03f24..fe638ae 100755
--- a/src/main/webapp/WEB-INF/tlds/struts-logic.tld
+++ b/src/main/webapp/WEB-INF/tlds/struts-logic.tld
@@ -1,561 +1,1892 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+    $Id: struts-logic.tld 481833 2006-12-03 17:32:52Z niallp $
 
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!DOCTYPE taglib
+        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+    <tlib-version>1.3</tlib-version>
+    <jsp-version>1.2</jsp-version>
+    <short-name>logic</short-name>
+    <uri>http://struts.apache.org/tags-logic</uri>
+    <description>
+        <![CDATA[
+  <p><strong>Note:  Some of the features in this taglib are also
+  available in the <a href="http://java.sun.com/products/jsp/jstl/">JavaServer Pages Standard Tag Library (JSTL)</a>.
+  The Struts team encourages the use of the standard tags over the Struts
+  specific tags when possible.</strong></p>
 
+  <p>This tag library contains tags that are useful in managing conditional
+  generation of output text, looping over object collections for
+  repetitive generation of output text, and application flow management.</p>
 
+  <p>For tags that do value comparisons (<code>equal</code>,
+  <code>greaterEqual</code>, <code>greaterThan</code>, <code>lessEqual</code>,
+  <code>lessThan</code>, <code>notEqual</code>), the following rules apply:</p>
+  <ul>
+  <li>The specified value is examined.  If it can be converted successfully
+      to a <code>double</code> or a <code>long</code>, it is assumed that the
+      ultimate comparison will be numeric (either floating point or integer).
+      Otherwise, a String comparison will be performed.</li>
+  <li>The variable to be compared to is retrieved, based on the selector
+      attribute(s) (<code>cookie</code>, <code>header</code>,
+      <code>name</code>, <code>parameter</code>, <code>property</code>)
+      present on this tag.  It will be converted to the appropriate type
+      for the comparison, as determined above.</li>
+  <li>If the specified variable or property returns null, it will be
+      coerced to a zero-length string before the comparison occurs.</li>
+  <li>The specific comparison for this tag will be performed, and the nested
+      body content of this tag will be evaluated if the comparison returns
+      a <code>true</code> result.</li>
+  </ul>
 
+  <p>For tags that do substring matching (<code>match</code>,
+  <code>notMatch</code>), the following rules apply:</p>
+  <ul>
+  <li>The specified variable is retrieved, based on the selector attribute(s)
+      (<code>cookie</code>, <code>header</code>, <code>name</code>,
+      <code>parameter</code>, <code>property</code>) present on this tag.
+      The variable is converted to a String, if necessary.</li>
+  <li>A request time exception will be thrown if the specified variable
+      cannot be retrieved, or has a null value.</li>
+  <li>The specified value is checked for existence as a substring of the
+      variable, in the position specified by the <code>location</code>
+      attribute, as follows:  at the beginning (if location is set to
+      <code>start</code>), at the end (if location is set to
+      <code>end</code>), or anywhere (if location is not specified).</li>
+  </ul>
 
+  <p>Many of the tags in this tag library will throw a
+  <code>JspException</code> at runtime when they are utilized incorrectly
+  (such as when you specify an invalid combination of tag attributes).  JSP
+  allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
+  directive.  If you wish to process the actual exception that caused the
+  problem, it is passed to the error page as a request attribute under key
+  <code>org.apache.struts.action.EXCEPTION</code>.</p>
 
-<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
-<taglib>
-<tlibversion>1.0</tlibversion>
-<jspversion>1.1</jspversion>
-<shortname>logic</shortname>
-<uri>http://jakarta.apache.org/struts/tags-logic-1.0</uri>
-<tag>
-<name>equal</name>
-<tagclass>org.apache.struts.taglib.logic.EqualTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>forward</name>
-<tagclass>org.apache.struts.taglib.logic.ForwardTag</tagclass>
-<bodycontent>empty</bodycontent>
-<attribute>
-<name>name</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>greaterEqual</name>
-<tagclass>org.apache.struts.taglib.logic.GreaterEqualTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>greaterThan</name>
-<tagclass>org.apache.struts.taglib.logic.GreaterThanTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>iterate</name>
-<tagclass>org.apache.struts.taglib.logic.IterateTag</tagclass>
-<teiclass>org.apache.struts.taglib.logic.IterateTei</teiclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>collection</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>id</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>indexId</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>length</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>offset</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>type</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>lessEqual</name>
-<tagclass>org.apache.struts.taglib.logic.LessEqualTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>lessThan</name>
-<tagclass>org.apache.struts.taglib.logic.LessThanTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>match</name>
-<tagclass>org.apache.struts.taglib.logic.MatchTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>location</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>notEqual</name>
-<tagclass>org.apache.struts.taglib.logic.NotEqualTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>notMatch</name>
-<tagclass>org.apache.struts.taglib.logic.NotMatchTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>location</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>value</name>
-<required>true</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>notPresent</name>
-<tagclass>org.apache.struts.taglib.logic.NotPresentTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>role</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>user</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>present</name>
-<tagclass>org.apache.struts.taglib.logic.PresentTag</tagclass>
-<bodycontent>JSP</bodycontent>
-<attribute>
-<name>cookie</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>header</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>parameter</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>role</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>user</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
-<tag>
-<name>redirect</name>
-<tagclass>org.apache.struts.taglib.logic.RedirectTag</tagclass>
-<attribute>
-<name>anchor</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>forward</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>href</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>name</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>page</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramId</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramName</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramProperty</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>paramScope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>property</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>scope</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-<attribute>
-<name>transaction</name>
-<required>false</required>
-<rtexprvalue>true</rtexprvalue>
-</attribute>
-</tag>
+  ]]>
+    </description>
+    <tag>
+        <name>empty</name>
+        <tag-class>org.apache.struts.taglib.logic.EmptyTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested variable is
+    either null or an empty string.
+    </strong></p>
+          
+    <p>This tag evaluates its nested body content only if the specified value
+    is either absent (i.e. <code>null</code>), an empty string (i.e. a
+    <code>java.lang.String</code> with a length of zero), or an empty
+    <code>java.util.Collection</code> or <code>java.util.Map</code> (tested by
+    the .isEmpty() method on the respective interface).</p>
+    
+    <p>
+    <strong>JSTL</strong>:  The equivalent JSTL tag is &lt;c:if&gt; using the 
+    <code>empty</code> operator.  For example,
+    <br/>
+    <code>
+    	&lt;c:if test="${empty sessionScope.myBean.myProperty}"&gt;
+    	  do something
+    	&lt;/c:if&gt;
+    </code>
+    </p>
+    
+            <dl><dt><b>Since:</b></dt>
+            <dd>Struts 1.1</dd></dl>
+          ]]>
+        </description>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>equal</name>
+        <tag-class>org.apache.struts.taglib.logic.EqualTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested
+    variable is equal to the specified value.
+    </strong></p>
+          
+    <p>Compares the variable specified by one of the selector attributes
+    against the specified constant value.  The nested body content of this
+    tag is evaluated if the variable and value are <strong>equal</strong>.
+    </p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value to which the variable, specified by other
+      attribute(s) of this tag, will be compared.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>forward</name>
+        <tag-class>org.apache.struts.taglib.logic.ForwardTag</tag-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Forward control to the page specified by the specified ActionForward
+    entry.
+    </strong></p>
+          
+    <p>Performs a <code>PageContext.forward()</code> or
+    <code>HttpServletResponse.sendRedirect()</code> call for the global
+    <code>ActionForward</code> entry for the specified name.  URL
+    rewriting will occur automatically if a redirect is performed.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>
+      	The logical name of the global <code>ActionForward</code> entry
+      	that identifies the destination, and forwarding approach, to be used.
+        <strong>Note</strong>: forwarding to Tiles definitions is not supported
+        from this tag.  You should forward to them from an Action subclass.
+      </p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>greaterEqual</name>
+        <tag-class>org.apache.struts.taglib.logic.GreaterEqualTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested
+    variable is greater than or equal to the specified value.
+    </strong></p>
+          
+    <p>Compares the variable specified by one of the selector attributes
+    against the specified constant value.  The nested body content of this
+    tag is evaluated if the variable is <strong>greater than or equal</strong>
+    to the value.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value to which the variable, specified by other
+      attribute(s) of this tag, will be compared.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>greaterThan</name>
+        <tag-class>org.apache.struts.taglib.logic.GreaterThanTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested
+    variable is greater than the specified value.
+    </strong></p>
+          
+    <p>Compares the variable specified by one of the selector attributes
+    against the specified constant value.  The nested body content of this
+    tag is evaluated if the variable is <strong>greater than</strong>
+    the value.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value to which the variable, specified by other
+      attribute(s) of this tag, will be compared.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>iterate</name>
+        <tag-class>org.apache.struts.taglib.logic.IterateTag</tag-class>
+        <tei-class>org.apache.struts.taglib.logic.IterateTei</tei-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Repeat the nested body content of this tag over a specified collection.
+    </strong></p>
+          
+    <p>Repeats the nested body content of this tag once for every element
+    of the specified collection, which must be an <code>Iterator</code>,
+    a <code>Collection</code>, a <code>Map</code> (whose values are to be
+    iterated over), or an array.  The collection to be iterated over must be
+    specified in one of the following ways:</p>
+    <ul>
+    <li>As a runtime expression specified as the value of the
+        <code>collection</code> attribute.</li>
+    <li>As a JSP bean specified by the <code>name</code> attribute.</li>
+    <li>As the property, specified by the <code>property</code>, of the
+        JSP bean specified by the <code>name</code> attribute.</li>
+    </ul>
+
+    <p>The collection to be iterated over MUST conform to one of the following
+    requirements in order for iteration to be successful:</p>
+    <ul>
+    <li>An array of Java objects or primitives.</li>
+
+    <li>An implementation of <code>java.util.Collection</code>, including
+        <code>ArrayList</code> and <code>Vector</code>.</li>
+    <li>An implementation of <code>java.util.Enumeration</code>.</li>
+    <li>An implementation of <code>java.util.Iterator</code>.</li>
+    <li>An implementation of <code>java.util.Map</code>, including
+        <code>HashMap</code>, <code>Hashtable</code>, and
+        <code>TreeMap</code>.  <strong>NOTE</strong> - See below for
+        additional information about accessing Maps.</li>
+    </ul>
+
+    <p>Normally, each object exposed by the iterate tag is an element
+    of the underlying collection you are iterating over.  However, if you
+    iterate over a <code>Map</code>, the exposed object is of type
+    <code>Map.Entry</code> that has two properties:</p>
+    <ul>
+    <li><code>key</code> - The key under which this item is stored in the
+        underlying Map.</li>
+    <li><code>value</code> - The value that corresponds to this key.</li>
+    </ul>
+
+    <p>So, if you wish to iterate over the values of a Hashtable, you would
+    implement code like the following:</p>
+    <code>
+    &lt;logic:iterate id="element" name="myhashtable"&gt;<br/>
+      Next element is &lt;bean:write name="element" property="value"/&gt;<br/>
+    &lt;/logic:iterate&gt;
+    </code>
+
+    <p>If the collection you are iterating over can contain <code>null</code>
+    values, the loop will still be performed but no page scope attribute
+    (named by the <code>id</code> attribute) will be created for that loop
+    iteration.  You can use the <code>&lt;logic:present&gt;</code> and
+    <code>&lt;logic:notPresent&gt;</code> tags to test for this case.</p>
+
+    ]]>
+        </description>
+        <attribute>
+            <name>collection</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+            <description>
+                <![CDATA[
+      <p>A runtime expression that evaluates to a collection (conforming to
+      the requirements listed above) to be iterated over.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of a page scope JSP bean that will contain the current
+      element of the collection on each iteration, if it is not
+      <code>null</code>.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>indexId</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of a page scope JSP bean that will contain the current
+      index of the collection on each iteration.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>length</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The maximum number of entries (from the underlying collection) to be
+      iterated through on this page.  This can be either an integer that
+      directly expresses the desired value, or the name of a JSP bean (in
+      any scope) of type <code>java.lang.Integer</code> that defines the
+      desired value.  If not present, there will be no limit on the number
+      of iterations performed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the JSP bean containing the collection to be iterated
+      (if <code>property</code> is not specified), or the JSP bean whose
+      property getter returns the collection to be iterated (if
+      <code>property</code> is specified).</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>offset</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The zero-relative index of the starting point at which entries from
+      the underlying collection will be iterated through.  This can be either
+      an integer that directly expresses the desired value, or the name of a
+      JSP bean (in any scope) of type <code>java.lang.Integer</code> that
+      defines the desired value.  If not present, zero is assumed (meaning
+      that the collection will be iterated from the beginning.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Name of the property, of the JSP bean specified by <code>name</code>,
+      whose getter returns the collection to be iterated.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>type</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Fully qualified Java class name of the element to be exposed through
+      the JSP bean named from the <code>id</code> attribute.  If not present,
+      no type conversions will be performed.  NOTE:  The actual elements of
+      the collection must be assignment-compatible with this class, or a
+      request time ClassCastException will occur.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>lessEqual</name>
+        <tag-class>org.apache.struts.taglib.logic.LessEqualTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested
+    variable is less than or equal to the specified value.
+    </strong></p>
+          
+    <p>Compares the variable specified by one of the selector attributes
+    against the specified constant value.  The nested body content of this
+    tag is evaluated if the variable is <strong>less than or equal</strong>
+    to the value.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value to which the variable, specified by other
+      attribute(s) of this tag, will be compared.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>lessThan</name>
+        <tag-class>org.apache.struts.taglib.logic.LessThanTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested
+    variable is less than the specified value.
+    </strong></p>
+          
+    <p>Compares the variable specified by one of the selector attributes
+    against the specified constant value.  The nested body content of this
+    tag is evaluated if the variable is <strong>less than</strong>
+    the value.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value to which the variable, specified by other
+      attribute(s) of this tag, will be compared.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>match</name>
+        <tag-class>org.apache.struts.taglib.logic.MatchTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the specified value
+    is an appropriate substring of the requested variable.
+    </strong></p>
+          
+    <p>Matches the variable specified by one of the selector attributes
+    (as a String) against the specified constant value.  If the value is
+    a substring (appropriately limited by the <code>location</code>
+    attribute), the nested body content of this tag is evaluated.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>location</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If not specified, a match between the variable and the value may
+      occur at any position within the variable string.  If specified, the
+      match must occur at the specified location (either <code>start</code>
+      or <code>end</code>) of the variable string.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value which is checked for existence as a substring
+      of the specified variable.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>messagesNotPresent</name>
+        <tag-class>
+            org.apache.struts.taglib.logic.MessagesNotPresentTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Generate the nested body content of this tag if the specified
+    message is not present in any scope.
+    </strong></p>
+          
+    <p>Evaluates the nested body content of this tag if
+       an <code>ActionMessages</code>
+       object, <code>ActionErrors</code> object, a String,
+       or a String array is not present in any scope.  If
+       such a bean is found, nothing will be rendered.
+    </p>
+    
+            <dl><dt><b>Since:</b></dt>
+            <dd>Struts 1.1</dd></dl>
+          ]]>
+        </description>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The parameter key used to retrieve the message from page, request,
+      session or application scope.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Name of the property for which messages should be
+         retrieved.  If not specified, all messages (regardless
+         of property) are retrieved.
+      </p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>message</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>By default the tag will retrieve the bean it will
+         iterate over from the <code>Globals.ERROR_KEY</code> constant string,
+         but if this attribute is set to 'true' the bean
+         will be retrieved from the <code>Globals.MESSAGE_KEY</code>
+         constant string.  Also if this is set to 'true', any value
+         assigned to the name attribute will be ignored.
+      </p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>messagesPresent</name>
+        <tag-class>
+            org.apache.struts.taglib.logic.MessagesPresentTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Generate the nested body content of this tag if the specified
+    message is present in any scope.
+    </strong></p>
+          
+    <p>Evaluates the nested body content of this tag if
+       an <code>ActionMessages</code>
+       object, <code>ActionErrors</code> object, a String,
+       or a String array is present in any scope.  If
+       such a bean is not found, nothing will be rendered.
+    </p>
+    
+            <dl><dt><b>Since:</b></dt>
+            <dd>Struts 1.1</dd></dl>
+          ]]>
+        </description>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The parameter key used to retrieve the message from page, request, 
+      session, or application scope.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Name of the property for which messages should be
+         retrieved.  If not specified, all messages (regardless
+         of property) are retrieved.
+      </p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>message</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>By default the tag will retrieve the bean it will
+         iterate over from the <code>Globals.ERROR_KEY</code> constant string,
+         but if this attribute is set to 'true' the bean
+         will be retrieved from the <code>Globals.MESSAGE_KEY</code>
+         constant string.  Also if this is set to 'true', any value
+         assigned to the name attribute will be ignored.
+      </p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>notEmpty</name>
+        <tag-class>org.apache.struts.taglib.logic.NotEmptyTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested variable is
+    neither null, nor an empty string, nor an empty java.util.Collection
+    (tested by the .isEmpty() method on the java.util.Collection interface).
+    </strong></p>
+          
+    <p>This tag evaluates its nested body content only if the specified value
+    is present (i.e. not <code>null</code>) and is not an empty string (i.e. a
+    <code>java.lang.String</code> with a length of zero).</p>
+    
+    <p>
+    <strong>JSTL</strong>:  The equivalent JSTL tag is &lt;c:if&gt; using the 
+    <code>! empty</code> operator.  For example,
+    <br/>
+    <code>
+    	&lt;c:if test="${ ! empty sessionScope.myBean.myProperty}"&gt;
+    	  do something
+    	&lt;/c:if&gt;
+    </code>
+    </p>
+    ]]>
+        </description>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>notEqual</name>
+        <tag-class>org.apache.struts.taglib.logic.NotEqualTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the requested
+    variable is not equal to the specified value.
+    </strong></p>
+          
+    <p>Compares the variable specified by one of the selector attributes
+    against the specified constant value.  The nested body content of this
+    tag is evaluated if the variable and value are <strong>not equal</strong>.
+    </p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be compared is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value to which the variable, specified by other
+      attribute(s) of this tag, will be compared.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>notMatch</name>
+        <tag-class>org.apache.struts.taglib.logic.NotMatchTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Evaluate the nested body content of this tag if the specified value
+    is not an appropriate substring of the requested variable.
+    </strong></p>
+          
+    <p>Matches the variable specified by one of the selector attributes
+    (as a String) against the specified constant value.  If the value is
+    not a substring (appropriately limited by the <code>location</code>
+    attribute), the nested body content of this tag is evaluated.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the value of the cookie whose
+      name is specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the value of the header whose
+      name is specified by this attribute.  The name match is performed
+      in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>location</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If not specified, a match between the variable and the value may
+      occur at any position within the variable string.  If specified, the
+      match must occur at the specified location (either <code>start</code>
+      or <code>end</code>) of the variable string.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the JSP bean specified by this
+      attribute, if <code>property</code> is not specified, or the value
+      of the specified property of this bean, if <code>property</code>
+      is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the first, or only, value of the
+      request parameter specified by this attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The variable to be matched is the property (of the bean specified
+      by the <code>name</code> attribute) specified by this attribute.
+      The property reference can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The constant value which is checked for existence as a substring
+      of the specified variable.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>notPresent</name>
+        <tag-class>org.apache.struts.taglib.logic.NotPresentTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Generate the nested body content of this tag if the specified
+    value is not present in this request.
+    </strong></p>
+          
+    <p>Depending on which attribute is specified, this tag checks the
+    current request, and evaluates the nested body content of this tag
+    only if the specified value <strong>is not</strong> present.  Only one
+    of the attributes may be used in one occurrence of this tag, unless
+    you use the <code>property</code> attribute, in which case the
+    <code>name</code> attribute is also required.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of a cookie with the specified name.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of an HTTP header with the specified
+      name.  The name match is performed in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of a JSP bean, in any scope, with the
+      specified name.  If <code>property</code> is also specified, checks
+      for a non-null property value for the specified property.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of at least one occurrence of the
+      specified request parameter on this request, even if the parameter
+      value is a zero-length string.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of a non-null property value, returned
+      by a property getter method on the JSP bean (in any scope) that is
+      specified by the <code>name</code> attribute.  Property references
+      can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>role</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks whether the currently authenticated user (if any) has been
+      associated with the specified security role.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>user</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks whether the currently authenticated user principal has the
+      specified name.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>present</name>
+        <tag-class>org.apache.struts.taglib.logic.PresentTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Generate the nested body content of this tag if the specified
+    value is present in this request.
+    </strong></p>
+          
+    <p>Depending on which attribute is specified, this tag checks the
+    current request, and evaluates the nested body content of this tag
+    only if the specified value <strong>is</strong> present.  Only one
+    of the attributes may be used in one occurrence of this tag, unless
+    you use the <code>property</code> attribute, in which case the
+    <code>name</code> attribute is also required.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>cookie</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of a cookie with the specified name.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>header</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of an HTTP header with the specified
+      name.  The name match is performed in a case insensitive manner.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of a JSP bean, in any scope, with the
+      specified name.  If <code>property</code> is also specified, checks
+      for a non-null property value for the specified property.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>parameter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of at least one occurrence of the
+      specified request parameter on this request, even if the parameter
+      value is a zero-length string.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks for the existence of a non-null property value, returned
+      by a property getter method on the JSP bean (in any scope) that is
+      specified by the <code>name</code> attribute.  Property references
+      can be simple, nested, and/or indexed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>role</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks whether the currently authenticated user (if any) has been
+      associated with any of the specified security roles. Use a comma-delimited
+      list to check for multiple roles. Example:
+      <code>&lt;logic:present role="role1,role2,role3"&gt;
+                code.....
+            &lt;/logic:present&gt;</code></p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the bean named by the
+      <code>name</code> property, or "any scope" if not specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>user</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Checks whether the currently authenticated user principal has the
+      specified name.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>redirect</name>
+        <tag-class>org.apache.struts.taglib.logic.RedirectTag</tag-class>
+        <description>
+            <![CDATA[
+            <p><strong>Render an HTTP Redirect</strong></p>
+          
+
+                <p>Performs an <code>HttpServletResponse.sendRedirect()</code>
+                call to the hyperlink specified by the attributes to this
+                tag.  URL rewriting will be applied automatically, to
+                maintain session state in the absence of cookies.</p>
+
+                <p>The base URL for this redirect is calculated based on
+                which of the following attributes you specify (you must
+                specify exactly one of them):</p>
+                <ul>
+                <li><em>forward</em> - Use the value of this attribute as the
+                    name of a global <code>ActionForward</code> to be looked
+                    up, and use the module-relative or context-relative
+                    URI found there.</li>
+                <li><em>href</em> - Use the value of this attribute unchanged.
+                    </li>
+                <li><em>page</em> - Use the value of this attribute as an
+                    module-relative URI, and generate a server-relative
+                    URI by including the context path.</li>
+                </ul>
+
+                <p>Normally, the redirect you specify with one of the
+                attributes described in the previous paragraph will be left
+                unchanged (other than URL rewriting if necessary).  However,
+                there are two ways you can append one or more dynamically
+                defined query parameters to the hyperlink -- specify a single
+                parameter with the <code>paramId</code> attribute (and its
+                associated attributes to select the value), or specify the
+                <code>name</code> (and optional <code>property</code>)
+                attributes to select a <code>java.util.Map</code> bean that
+                contains one or more parameter ids and corresponding values.
+                </p>
+
+                <p>To specify a single parameter, use the <code>paramId</code>
+                attribute to define the name of the request parameter to be
+                submitted.  To specify the corresponding value, use one of the
+                following approaches:</p>
+                <ul>
+                <li><em>Specify only the <code>paramName</code> attribute</em>
+                    - The named JSP bean (optionally scoped by the value of the
+                    <code>paramScope</code> attribute) must identify a value
+                    that can be converted to a String.</li>
+                <li><em>Specify both the <code>paramName</code> and
+                    <code>paramProperty</code> attributes</em> - The specified
+                    property getter method will be called on the JSP bean
+                    identified by the <code>paramName</code> (and optional
+                    <code>paramScope</code>) attributes, in order to select
+                    a value that can be converted to a String.</li>
+                </ul>
+
+                <p>If you prefer to specify a <code>java.util.Map</code> that
+                contains all of the request parameters to be added to the
+                hyperlink, use one of the following techniques:</p>
+                <ul>
+                <li><em>Specify only the <code>name</code> attribute</em> -
+                    The named JSP bean (optionally scoped by the value of
+                    the <code>scope</code> attribute) must identify a
+                    <code>java.util.Map</code> containing the parameters.</li>
+                <li><em>Specify both <code>name</code> and
+                    <code>property</code> attributes</em> - The specified
+                    property getter method will be called on the bean
+                    identified by the <code>name</code> (and optional
+                    <code>scope</code>) attributes, in order to return the
+                    <code>java.util.Map</code> containing the parameters.</li>
+                </ul>
+
+                <p>As the <code>Map</code> is processed, the keys are assumed
+                to be the names of query parameters to be appended to the
+                hyperlink.  The value associated with each key must be either
+                a String or a String array representing the parameter value(s).
+                If a String array is specified, more than one value for the
+                same query parameter name will be created.</p>
+                ]]>
+        </description>
+        <attribute>
+            <name>action</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                          <p>Logical name of a global <code>Action</code> that
+                          contains the actual content-relative URI of the destination
+                          of this transfer.  This hyperlink may be dynamically
+                          modified by the inclusion of query parameters, as described
+                          in the tag description.  You <strong>must</strong> specify
+                          exactly one of the <code>action</code> attribute, the
+                          <code>forward</code> attribute, the
+                          <code>href</code> attribute,
+                          or the <code>page</code> attribute.</p>
+                      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>anchor</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>Optional anchor tag ("#xxx") to be added to the generated
+                  hyperlink.  Specify this value <strong>without</strong> any
+                  "#" character.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>forward</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>Logical name of a global <code>ActionForward</code> that
+                  contains the actual content-relative URI of the destination
+                  of this redirect.  This URI may be dynamically
+                  modified by the inclusion of query parameters, as described
+                  in the tag description.  You <strong>must</strong> specify
+                  exactly one of the <code>forward</code> attribute, the
+                  <code>href</code> attribute, the <code>linkName</code>
+                  attribute, or the <code>page</code> attribute.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>href</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The URL to which this redirect will transfer control.
+                  This URL may be dynamically modified
+                  by the inclusion of query parameters, as described in the
+                  tag description.  You <strong>must</strong> specify
+                  exactly one of the <code>forward</code> attribute, the
+                  <code>href</code> attribute, the <code>linkName</code>
+                  attribute, or the <code>page</code> attribute.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The name of a JSP bean that contains a <code>Map</code>
+                  representing the query parameters (if <code>property</code>
+                  is not specified), or a JSP bean whose property getter is
+                  called to return a <code>Map</code> (if <code>property</code>
+                  is specified).</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>page</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The context-relative path (beginning with a "/"
+                  character) to which this hyperlink will transfer control
+                  if activated.  This hyperlink may be dynamically modified
+                  by the inclusion of query parameters, as described in the
+                  tag description.  You <strong>must</strong> specify exactly
+                  one of the <code>forward</code> attribute, the
+                  <code>href</code> attribute, the <code>linkName</code>
+                  attribute, or the <code>page</code> attribute.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>paramId</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The name of the request parameter that will be dynamically
+                  added to the generated hyperlink.  The corresponding value is
+                  defined by the <code>paramName</code> and (optional)
+                  <code>paramProperty</code> attributes, optionally scoped by
+                  the <code>paramScope</code> attribute</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>paramName</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The name of a JSP bean that is a String containing the
+                  value for the request parameter named by <code>paramId</code>
+                  (if <code>paramProperty</code> is not specified), or a JSP
+                  bean whose property getter is called to return a String
+                  (if <code>paramProperty</code> is specified).  The JSP bean
+                  is constrained to the bean scope specified by the
+                  <code>paramScope</code> property, if it is specified.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>paramProperty</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The name of a property of the bean specified by the
+                  <code>paramName</code> attribute, whose return value must
+                  be a String containing the value of the request parameter
+                  (named by the <code>paramId</code> attribute) that will be
+                  dynamically added to this hyperlink.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>paramScope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The scope within which to search for the bean specified
+                  by the <code>paramName</code> attribute.  If not specified,
+                  all scopes are searched.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The name of a property of the bean specified by the
+                  <code>name</code> attribute, whose return value must be
+                  a <code>java.util.Map</code> containing the query parameters
+                  to be added to the hyperlink.  You <strong>must</strong>
+                  specify the <code>name</code> attribute if you specify
+                  this attribute.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                  <p>The scope within which to search for the bean specified
+                  by the <code>name</code> attribute.  If not specified, all
+                  scopes are searched.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>transaction</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+                    <p>Set to <code>true</code> if you want the current
+                    transaction control token included in the generated
+                    URL for this redirect.</p>
+                  ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>useLocalEncoding</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+              <p>If set to <code>true</code>, LocalCharacterEncoding will be
+              used, that is, the characterEncoding set to the HttpServletResponse,
+              as prefered character encoding rather than UTF-8, when
+              URLEncoding is done on parameters of the URL.</p>
+              ]]>
+            </description>
+        </attribute>
+    </tag>
 </taglib>
 
 
-- 
cgit v1.1