Following are highlights of the new features. In the next section, we
provide links to the JavaDocs for the affected classes.
New Configuration DTD
The Struts Configuration 1.0 DTD has been deprecated in favor of the
struts-config_1_1.dtd
.
In the Struts 1.1 release, existing Struts configuration files can be
loaded using either DTD version.
New Dependencies on Commons packages
Several components of Struts 1.0 have been found to be useful in
general Java development (and not just useful for building Struts-based
web applications), and have been migrated into the
Jakarta Commons Project.
As a result, the current development version of Struts has been modified
to rely on the Commons packages containing these classes, rather than the
Struts internal versions. In nearly every case, this involved changing
only the import
statements at the top of your classes. Any
applications that utilize these classes will need to be modified in the
same way.
The following Commons packages contain the replacements for the
corresponding Struts 1.0 classes:
- BeanUtils Package
[
org.apache.commons.beanutils
] -
org.apache.struts.utils.BeanUtils
,
org.apache.struts.utils.ConvertUtils
, and
org.apache.struts.utils.PropertyUtils
.
- Collections Package
[
org.apache.commons.collections
] -
org.apache.struts.util.ArrayStack
,
org.apache.struts.util.FastArrayList
,
org.apache.struts.util.FastHashMap
,
org.apache.struts.util.FastTreeMap
.
- Digester Package -
[
org.apache.commons.digester
] -
org.apache.struts.digester.*
.
The following Commons packages are also now used by various components
of the Struts framework:
NOTE! XML Parser Prerequisite Updated
Struts now depends on an XML parser that conforms to the JAXP/1.1
(rather than JAXP/1.0) APIs. Parsers known to work include the JAXP/1.1
reference implementation, and Xerces 1.3.1.
SOURCE DEVELOPERS NOTE! Ant Prerequisite Updated
To build Struts from source Ant 1.4 or later is now required. This
does not affect developers that use Struts from the binary distribution.
Struts Validator Integration
The new Commons-Validator is now integrated with Struts and exposed
through the new Validator package.
Tiles - An advanced templating taglib
The Tiles JSP assembly framework has been integrated with Struts.
Nested - An very cool taglib extension
The Nested taglib is bundled with Struts and enhances the functionality
of the existing Struts tags.
New Example Applications
New example applications for the Validator and Tiles are now part
of the Struts distribution.
New Contrib directory for optional components
A new directory (contrib
) in the CVS source repository has
been added to accumulate Struts add-on extensions that are generally
useful but have not yet been integrated into the standard code base.
- Scaffold - An extension of the Commons Scaffold toolkit of reusable
classes for building web applications.
- Struts-el - The optional Struts-el taglib makes it easy to use Struts
with JSTL (container with servlet 2.3 support required).
The source for these components is available in the Struts source
distribution. Binary distributions may also be made available with the Struts
download area. As optional components, these products have their own
release cycles.
Action Package Additions
The following new features have been added to the basic controller
framework [org.apache.struts.action
]:
- The ActionServlet now provides support for modular Struts applications and
sports several new extension points.
- The new
ActionMessages
class will support a superset of
the capabilities of ActionErrors
, and will be useful as
a collection of general purpose messages, not just errors.
Upload Package Additions
The following new features have been added to the file upload classes
[org.apache.struts.upload
]:
CommonsMultipartRequestHandler:
New class that implements
file upload using the Jakarta Commons FileUpload package.
Util Package Additions
The following new features have been added to the utility classes
[org.apache.struts.util
]:
LocalStrings:
Correct message regarding replaceable parameter so that it does not append an extraneous character.
LabelValueBean:
New class that defines a collection of name/value pairs that can be used with the <html:options> tag, and elsewhere.
MessageResources:
Escape any single quote characters that are included in the specified message string.
computeParameters:
Allow a transaction token to be the only parameter in .
RequestUtils:
Change to encode ampersands when building a query string.
Bean Taglib Package Additions
The following new features have been added to the
struts-bean custom tag library
[org.apache.struts.taglib.bean
]:
<bean:write>
: Add format, locale and bundle attributes to support formatting values according to current
user locale, format string from attribute or format string from string resources.
<bean:cookie>, <bean:header>, or <bean:parameter>:
Correct the generated scripting variable type when tag is used with the "multiple" attribute.
<bean:message>:
Added name
, property
, and scope
attributes to the tag, so that the message source key can be obtained dynamically from a bean or bean property.
HTML Taglib Package Additions
The following new features have been added to the
struts-html custom tag library [org.apache.struts.taglib.html
]:
<html:link>:
Added 'action' attribute.
<html:options>:
If the property specified by the 'property' attribute returns null, tag now throws an error message that indicates what the real problem is, rather than causing an NPE.
<html:option> and <html:options>:
Added 'style' and 'styleClass' attributes.
<html:optionsCollection>:
New tag providing a cleaner way of populating HTML options from a collection.
<bean:message>:
Added 'name', 'property' and 'scope' attributes so that the message resource key can be obtained dynamically from a bean.
<html:messages>:
New tag to iterate through a message collection in the new ActionMessages
class.
ActionForm:
Tag will now call reset()
if it instantiates the ActionForm bean. This also requires that the bean instantiated by the tag to be an ActionForm
subclass.
<html:image>:
Added the 'align' attribute.
<html:img>:
Added the mouse event attributes ('onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout').
SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, and TextArea tags:
Added indexed property.
Logic Taglib Package Additions
The following new features have been added to the
struts-logic custom tag library [org.apache.struts.taglib.logic
]:
<logic:empty>
and
<logic:notEmpty>
: New tags that are similar to
<logic:present>
and
<logic:notPresent>
except for the treatment of
empty strings.
Template Taglib Package Additions
The following new features have been added to the
struts-template custom tag library
[org.apache.struts.taglib.template
]:
Documentation Additions
The following new features have been added to the Struts Documentation
application (and corresponding contents on the Struts web site):
- Version Differences: New section in Release Notes to link to the JavaDocs for all Struts classes and members added or changed between versions.
- FAQ/HowTos: New documentation category organizes our FAQs and example-driven howTos.
New HowTos include "Building Applications", "Using SSL", and using Struts with Eclipse or NetBeans.
- User Guide Preface: New section to overview the enabling technologies behind Struts.
- Developer Guides: Added "cover page" to guides. These then link to the Package Descriptions and the API guides.
- HTML tag documentation: expanded to cover using indexed properties with iterate.
- Site Menu: Removed separate links to taglib documentation, since these are now in the Developer Guide.
- Newbie FAQ: The questions most likely to be asked by new developers using Struts. Still under development.
- Kickstart FAQ: The questions most likely to be asked when selecting Struts.
- 1.0 JavaDoc: Added archival copy to web site for future reference.
- The UserGuide "Building" pages: General revisions to reflect new features and current practices.
- Installation: Updated instructions for SilverStream and Resin. Add installation notes for Jetty. Added RexIP to list of nominal containers.
- JavaDocs: New
@since Struts 1.1
tag to indicate new packages, classes, and members added after the Struts 1.0.x version