From d2ca42f427b3eda09c01a7e340a6f7b9e32ee3fd Mon Sep 17 00:00:00 2001
From: Leif Johansson
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.
+For tags that do value comparisons (equal
,
+ greaterEqual
, greaterThan
, lessEqual
,
+ lessThan
, notEqual
), the following rules apply:
double
or a long
, it is assumed that the
+ ultimate comparison will be numeric (either floating point or integer).
+ Otherwise, a String comparison will be performed.cookie
, header
,
+ name
, parameter
, property
)
+ present on this tag. It will be converted to the appropriate type
+ for the comparison, as determined above.true
result.For tags that do substring matching (match
,
+ notMatch
), the following rules apply:
cookie
, header
, name
,
+ parameter
, property
) present on this tag.
+ The variable is converted to a String, if necessary.location
+ attribute, as follows: at the beginning (if location is set to
+ start
), at the end (if location is set to
+ end
), or anywhere (if location is not specified).Many of the tags in this tag library will throw a
+ JspException
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 <%@ page %>
+ 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
+ org.apache.struts.action.EXCEPTION
.
This tag evaluates its nested body content only if the specified value
+ is either absent (i.e. null
), an empty string (i.e. a
+ java.lang.String
with a length of zero), or an empty
+ java.util.Collection
or java.util.Map
(tested by
+ the .isEmpty() method on the respective interface).
+ JSTL: The equivalent JSTL tag is <c:if> using the
+ empty
operator. For example,
+
+
+ <c:if test="${empty sessionScope.myBean.myProperty}">
+ do something
+ </c:if>
+
+
property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 equal. +
+ ]]> +property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ Performs a PageContext.forward()
or
+ HttpServletResponse.sendRedirect()
call for the global
+ ActionForward
entry for the specified name. URL
+ rewriting will occur automatically if a redirect is performed.
ActionForward
entry
+ that identifies the destination, and forwarding approach, to be used.
+ Note: forwarding to Tiles definitions is not supported
+ from this tag. You should forward to them from an Action subclass.
+
+ ]]>
+ 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 greater than or equal + to the value.
+ ]]> +property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 greater than + the value.
+ ]]> +property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ Repeats the nested body content of this tag once for every element
+ of the specified collection, which must be an Iterator
,
+ a Collection
, a Map
(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:
collection
attribute.name
attribute.property
, of the
+ JSP bean specified by the name
attribute.The collection to be iterated over MUST conform to one of the following + requirements in order for iteration to be successful:
+java.util.Collection
, including
+ ArrayList
and Vector
.java.util.Enumeration
.java.util.Iterator
.java.util.Map
, including
+ HashMap
, Hashtable
, and
+ TreeMap
. NOTE - See below for
+ additional information about accessing Maps.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 Map
, the exposed object is of type
+ Map.Entry
that has two properties:
key
- The key under which this item is stored in the
+ underlying Map.value
- The value that corresponds to this key.So, if you wish to iterate over the values of a Hashtable, you would + implement code like the following:
+
+ <logic:iterate id="element" name="myhashtable">
+ Next element is <bean:write name="element" property="value"/>
+ </logic:iterate>
+
+
+ If the collection you are iterating over can contain null
+ values, the loop will still be performed but no page scope attribute
+ (named by the id
attribute) will be created for that loop
+ iteration. You can use the <logic:present>
and
+ <logic:notPresent>
tags to test for this case.
null
.
+ ]]>
+ java.lang.Integer
that defines the
+ desired value. If not present, there will be no limit on the number
+ of iterations performed.
+ ]]>
+ property
is not specified), or the JSP bean whose
+ property getter returns the collection to be iterated (if
+ property
is specified).
+ ]]>
+ java.lang.Integer
that
+ defines the desired value. If not present, zero is assumed (meaning
+ that the collection will be iterated from the beginning.
+ ]]>
+ name
,
+ whose getter returns the collection to be iterated.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ id
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.
+ ]]>
+ 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 less than or equal + to the value.
+ ]]> +property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 less than + the value.
+ ]]> +property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 location
+ attribute), the nested body content of this tag is evaluated.
start
+ or end
) of the variable string.
+ ]]>
+ property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ Evaluates the nested body content of this tag if
+ an ActionMessages
+ object, ActionErrors
object, a String,
+ or a String array is not present in any scope. If
+ such a bean is found, nothing will be rendered.
+
Globals.ERROR_KEY
constant string,
+ but if this attribute is set to 'true' the bean
+ will be retrieved from the Globals.MESSAGE_KEY
+ constant string. Also if this is set to 'true', any value
+ assigned to the name attribute will be ignored.
+
+ ]]>
+ Evaluates the nested body content of this tag if
+ an ActionMessages
+ object, ActionErrors
object, a String,
+ or a String array is present in any scope. If
+ such a bean is not found, nothing will be rendered.
+
Globals.ERROR_KEY
constant string,
+ but if this attribute is set to 'true' the bean
+ will be retrieved from the Globals.MESSAGE_KEY
+ constant string. Also if this is set to 'true', any value
+ assigned to the name attribute will be ignored.
+
+ ]]>
+ This tag evaluates its nested body content only if the specified value
+ is present (i.e. not null
) and is not an empty string (i.e. a
+ java.lang.String
with a length of zero).
+ JSTL: The equivalent JSTL tag is <c:if> using the
+ ! empty
operator. For example,
+
+
+ <c:if test="${ ! empty sessionScope.myBean.myProperty}">
+ do something
+ </c:if>
+
+
property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 not equal. +
+ ]]> +property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 location
+ attribute), the nested body content of this tag is evaluated.
start
+ or end
) of the variable string.
+ ]]>
+ property
is not specified, or the value
+ of the specified property of this bean, if property
+ is specified.
+ ]]>
+ name
attribute) specified by this attribute.
+ The property reference can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 is not present. Only one
+ of the attributes may be used in one occurrence of this tag, unless
+ you use the property
attribute, in which case the
+ name
attribute is also required.
property
is also specified, checks
+ for a non-null property value for the specified property.
+ ]]>
+ name
attribute. Property references
+ can be simple, nested, and/or indexed.
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ 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 is present. Only one
+ of the attributes may be used in one occurrence of this tag, unless
+ you use the property
attribute, in which case the
+ name
attribute is also required.
property
is also specified, checks
+ for a non-null property value for the specified property.
+ ]]>
+ name
attribute. Property references
+ can be simple, nested, and/or indexed.
+ ]]>
+ <logic:present role="role1,role2,role3">
+ code.....
+ </logic:present>
+ ]]>
+ name
property, or "any scope" if not specified.
+ ]]>
+ Performs an HttpServletResponse.sendRedirect()
+ 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.
The base URL for this redirect is calculated based on + which of the following attributes you specify (you must + specify exactly one of them):
+ActionForward
to be looked
+ up, and use the module-relative or context-relative
+ URI found there.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 paramId
attribute (and its
+ associated attributes to select the value), or specify the
+ name
(and optional property
)
+ attributes to select a java.util.Map
bean that
+ contains one or more parameter ids and corresponding values.
+
To specify a single parameter, use the paramId
+ attribute to define the name of the request parameter to be
+ submitted. To specify the corresponding value, use one of the
+ following approaches:
paramName
attribute
+ - The named JSP bean (optionally scoped by the value of the
+ paramScope
attribute) must identify a value
+ that can be converted to a String.paramName
and
+ paramProperty
attributes - The specified
+ property getter method will be called on the JSP bean
+ identified by the paramName
(and optional
+ paramScope
) attributes, in order to select
+ a value that can be converted to a String.If you prefer to specify a java.util.Map
that
+ contains all of the request parameters to be added to the
+ hyperlink, use one of the following techniques:
name
attribute -
+ The named JSP bean (optionally scoped by the value of
+ the scope
attribute) must identify a
+ java.util.Map
containing the parameters.name
and
+ property
attributes - The specified
+ property getter method will be called on the bean
+ identified by the name
(and optional
+ scope
) attributes, in order to return the
+ java.util.Map
containing the parameters.As the Map
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.
Action
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 must specify
+ exactly one of the action
attribute, the
+ forward
attribute, the
+ href
attribute,
+ or the page
attribute.
+ ]]>
+ ActionForward
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 must specify
+ exactly one of the forward
attribute, the
+ href
attribute, the linkName
+ attribute, or the page
attribute.
+ ]]>
+ forward
attribute, the
+ href
attribute, the linkName
+ attribute, or the page
attribute.
+ ]]>
+ Map
+ representing the query parameters (if property
+ is not specified), or a JSP bean whose property getter is
+ called to return a Map
(if property
+ is specified).
+ ]]>
+ forward
attribute, the
+ href
attribute, the linkName
+ attribute, or the page
attribute.
+ ]]>
+ paramName
and (optional)
+ paramProperty
attributes, optionally scoped by
+ the paramScope
attribute
+ ]]>
+ paramId
+ (if paramProperty
is not specified), or a JSP
+ bean whose property getter is called to return a String
+ (if paramProperty
is specified). The JSP bean
+ is constrained to the bean scope specified by the
+ paramScope
property, if it is specified.
+ ]]>
+ paramName
attribute, whose return value must
+ be a String containing the value of the request parameter
+ (named by the paramId
attribute) that will be
+ dynamically added to this hyperlink.
+ ]]>
+ paramName
attribute. If not specified,
+ all scopes are searched.
+ ]]>
+ name
attribute, whose return value must be
+ a java.util.Map
containing the query parameters
+ to be added to the hyperlink. You must
+ specify the name
attribute if you specify
+ this attribute.
+ ]]>
+ name
attribute. If not specified, all
+ scopes are searched.
+ ]]>
+ true
if you want the current
+ transaction control token included in the generated
+ URL for this redirect.
+ ]]>
+ true
, 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.
+ ]]>
+