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.
]]>