<?xml version="1.0"?>
<!--
    $Id: release-notes-1_1-b2.xml 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.
-->
<document url="release-notes-1_1-b2.html">

    <properties>
        <title>Struts Release Notes (Version 1.1 Beta 2)</title>
    </properties>

    <body>

        <section name="Introduction" href="Introduction">

            <p>This document contains the release notes for
                <strong>Version 1.1 Beta 2</strong>
                of the Struts Framework,
                and covers changes that have taken place since
                <a href="release-notes-1_0_2.html">Version 1.0.2</a>
                was released. The following sections cover
                <a href="#New">New Features</a>
                and
                <a href="#Changes">Changes</a>
                to Struts.
            </p>

        </section>


        <section name="What's Included?" href="Included">

            <p>The binary distribution of this release includes the following
                files relevant to Struts:</p>
            <ul>
                <li>
                    <code>INSTALL</code>
                    - Brief installation instructions. See
                    the
                    <code>Struts Documentation Application</code>
                    , or online at
                    <a href="http://jakarta.apache.org/struts/">
                        http://jakarta.apache.org/struts/</a>
                    for more information.
                </li>
                <li>
                    <code>LICENSE</code>
                    - The Apache Software Foundation license that
                    defines the terms under which you can use Struts (and
                    other software
                    licensed by Apache).
                </li>
                <li>
                    <code>README</code>
                    - A brief introduction to Struts.
                </li>
                <li>
                    <code>lib/</code>
                    - Directory containing files you will need in
                    your own applications. The individual files of interest
                    are:
                    <ul>
                        <li>
                            <code>commons-*.jar</code>
                            - Release packages from the
                            <a href="http://jakarta.apache.org/commons/">
                                Jakarta Commons
                                Project</a>
                            that Struts relies on. You are welcome to use
                            these
                            classes in your own applications. These JAR files
                            should be
                            copied into the
                            <code>/WEB-INF/lib</code>
                            directory of
                            your web application.
                        </li>
                        <li>
                            <code>struts.jar</code>
                            - JAR file that contains the compiled
                            Java classes of Struts. You must
                            place this file in the
                            <code>/WEB-INF/lib</code>
                            directory of
                            your web application.
                        </li>
                        <li>
                            <code>struts-xxxxx.tld</code>
                            - The tag library descriptor files
                            for the Struts 1.1 tag libraries (bean, html,
                            logic, and
                            template). You must place these files in the
                            <code>/WEB-INF</code>
                            directory of your web application, and reference
                            them with
                            appropriate
                            <code>&lt;taglib&gt;</code>
                            directives in your
                            web.xml file.
                        </li>
                        <li>
                            <code>jdbc2_0-stdext.jar</code>
                            - The JDBC 2.0 Optional Package
                            API classes (package
                            <code>javax.sql</code>
                            ). You will need to
                            include this file in the
                            <code>/WEB-INF/lib</code>
                            directory
                            of your application, if it is not already made
                            visible to web
                            applications by your servlet container.
                        </li>
                        <li>
                            <code>struts-config_1_1.dtd</code>
                            - The document type descriptor
                            (DTD) for the Struts 1.1 configuration file (which
                            is typically named
                            <code>/WEB-INF/struts-config.xml</code>
                            . Your configuration file
                            will be validated against an internal copy of this
                            DTD -- this
                            copy is available for reference purposes only.
                        </li>
                        <li>
                            <code>struts-config_1_0.dtd</code>
                            - The document type descriptor
                            (DTD) for the Struts 1.0 configuration file (which
                            is typically named
                            <code>/WEB-INF/struts-config.xml</code>
                            . Your configuration file
                            will be validated against an internal copy of this
                            DTD -- this
                            copy is available for reference purposes only.
                        </li>
                        <li>
                            <code>web-app_2_2.dtd</code>
                            - The document type descriptor (DTD)
                            for web.xml files conforming to the Servlet 2.2
                            specification.
                            This copy is for reference purposes only.
                        </li>
                        <li>
                            <code>web-app_2_3.dtd</code>
                            - The document type descriptor (DTD)
                            for web.xml files conforming to the Servlet 2.3
                            specification.
                            This copy is for reference purposes only.
                        </li>
                    </ul>
                </li>
                <li>
                    <code>webapps/</code>
                    - Web Application Archive (WAR) files for the
                    web applications that are included with Struts.
                </li>
            </ul>

        </section>

        <section name="What's New?" href="New">

            <p>Following are highlights of the new features. In the next
                section, we
                provide links to the JavaDocs for the affected classes.</p>

            <p>
                <strong>New Configuration DTD</strong>
            </p>
            <p>The Struts Configuration 1.0 DTD has been deprecated in favor
                of the
                <code>
                    <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
                        struts-config_1_1.dtd</a>
                </code>
                .
                In the Struts 1.1 release, existing Struts configuration files
                can be
                loaded using either DTD version.
            </p>

            <p>
                <strong>New Dependencies on Commons packages</strong>
            </p>
            <p>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
                <a href="http://jakarta.apache.org/commons/">Jakarta Commons
                    Project</a>
                .
                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
                <code>import</code>
                statements at the top of your classes. Any
                applications that utilize these classes will need to be
                modified in the
                same way.
            </p>
            <p>The following Commons packages contain the replacements for the
                corresponding Struts 1.0 classes:</p>
            <ul>
                <li>
                    <strong>BeanUtils Package</strong>
                    [
                    <a href="http://jakarta.apache.org/commons/beanutils.html">
                        <code>org.apache.commons.beanutils</code>
                    </a>
                    ] -
                    <code>org.apache.struts.utils.BeanUtils</code>
                    ,
                    <code>org.apache.struts.utils.ConvertUtils</code>
                    , and
                    <code>org.apache.struts.utils.PropertyUtils</code>
                    .
                </li>
                <li>
                    <strong>Collections Package</strong>
                    [
                    <a href="http://jakarta.apache.org/commons/collections.html">
                        <code>org.apache.commons.collections</code>
                    </a>
                    ] -
                    <code>org.apache.struts.util.ArrayStack</code>
                    ,
                    <code>org.apache.struts.util.FastArrayList</code>
                    ,
                    <code>org.apache.struts.util.FastHashMap</code>
                    ,
                    <code>org.apache.struts.util.FastTreeMap</code>
                    .
                </li>
                <li>
                    <strong>Digester Package</strong>
                    -
                    [
                    <a href="http://jakarta.apache.org/commons/digester.html">
                        <code>org.apache.commons.digester</code>
                    </a>
                    ] -
                    <code>org.apache.struts.digester.*</code>
                    .
                </li>
            </ul>
            <p>The following Commons packages are also now used by various
                components
                of the Struts framework:</p>
            <ul>
                <li>
                    <strong>Database Connection Pool Package</strong>
                    [
                    <a href="http://jakarta.apache.org/commons/dbcp.html">
                        <code>org.apache.commons.dbcp</code>
                    </a>
                    ]
                </li>
                <li>
                    <strong>FileUpload Package</strong>
                    [
                    <a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/fileupload/">
                        <code>org.apache.commons.fileupload</code>
                    </a>
                    ]
                </li>
                <li>
                    <strong>Logging Package</strong>
                    [
                    <a href="http://jakarta.apache.org/commons/logging.html">
                        <code>org.apache.commons.logging</code>
                    </a>
                    ]
                </li>
                <li>
                    <strong>Pool Package</strong>
                    [
                    <a href="http://jakarta.apache.org/commons/pool/index.html">
                        <code>org.apache.commons.pool</code>
                    </a>
                    ]
                </li>
                <li>
                    <strong>Services Package</strong>
                    [
                    <a href="http://cvs.apache.org/viewcvs/jakarta-commons-sandbox/services/">
                        <code>org.apache.commons.services</code>
                    </a>
                    ]
                </li>
                <li>
                    <strong>Validator Package</strong>
                    [
                    <a href="http://cvs.apache.org/viewcvs/jakarta-commons/validator/">
                        <code>org.apache.commons.validator</code>
                    </a>
                    ]
                </li>
            </ul>


            <p>
                <strong>NOTE! XML Parser Prerequisite Updated</strong>
            </p>

            <p>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.</p>

            <p>
                <strong>SOURCE DEVELOPERS NOTE! Ant Prerequisite
                    Updated</strong>
            </p>
            <p>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.</p>

            <p>
                <strong>Struts Validator Integration</strong>
            </p>
            <p>The new Commons-Validator is now integrated with Struts and
                exposed
                through the new Validator package.</p>

            <p>
                <strong>Tiles - An advanced templating taglib</strong>
            </p>
            <p>The Tiles JSP assembly framework has been integrated with
                Struts.</p>

            <p>
                <strong>Nested - An very cool taglib extension</strong>
            </p>
            <p>The Nested taglib is bundled with Struts and enhances the
                functionality
                of the existing Struts tags.</p>

            <p>
                <strong>New Example Applications</strong>
            </p>
            <p>New example applications for the Validator and Tiles are now
                part
                of the Struts distribution.</p>

            <p>
                <strong>New Contrib directory for optional components</strong>
            </p>
            <p>A new directory (
                <code>contrib</code>
                ) 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.
            </p>

            <ul>
                <li>Scaffold - Library of reusable classes for building web
                    applications.</li>
                <li>Service Manager - Add custom services without subclassing
                    controller.</li>
            </ul>

            <p>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.</p>

            <p>
                <strong>Action Package Additions</strong>
            </p>
            <p>The following new features have been added to the basic
                controller
                framework [
                <code>org.apache.struts.action</code>
                ]:
            </p>
            <ul>
                <li>The ActionServlet now provides support for modular Struts
                    applications and
                    sports several new extension points.</li>
                <li>The new
                    <code>ActionMessages</code>
                    class will support a superset of
                    the capabilities of
                    <code>ActionErrors</code>
                    , and will be useful as
                    a collection of general purpose messages, not just errors.
                </li>
            </ul>

            <p>
                <strong>Upload Package Additions</strong>
            </p>
            <p>The following new features have been added to the file upload
                classes
                [
                <code>org.apache.struts.upload</code>
                ]:
            </p>
            <ul>
                <li>
                    <code>CommonsMultipartRequestHandler:</code>
                    New class that implements
                    file upload using the Jakarta Commons FileUpload package.
                </li>
            </ul>

            <p>
                <strong>Util Package Additions</strong>
            </p>
            <p>The following new features have been added to the utility
                classes
                [
                <code>org.apache.struts.util</code>
                ]:
            </p>
            <ul>
                <li>
                    <code>LocalStrings:</code>
                    Correct message regarding replaceable parameter so that it
                    does not append an extraneous character.
                </li>
                <li>
                    <code>LabelValueBean:</code>
                    New class that defines a collection of name/value pairs
                    that can be used with the &lt;html:options&gt; tag, and
                    elsewhere.
                </li>
                <li>
                    <code>MessageResources:</code>
                    Escape any single quote characters that are included in
                    the specified message string.
                </li>
                <li>
                    <code>computeParameters:</code>
                    Allow a transaction token to be the only parameter in .
                </li>
                <li>
                    <code>RequestUtils:</code>
                    Change to encode ampersands when building a query string.
                </li>
            </ul>

            <p>
                <strong>Bean Taglib Package Additions</strong>
            </p>
            <p>The following new features have been added to the
                <em>struts-bean</em>
                custom tag library
                [
                <code>org.apache.struts.taglib.bean</code>
                ]:
            </p>
            <ul>
                <li>
                    <code>&lt;bean:write></code>
                    : 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.
                </li>
                <li>
                    <code>&lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter>:</code>
                    Correct the generated scripting variable type when tag is
                    used with the "multiple" attribute.
                </li>
                <li>
                    <code>&lt;bean:message&gt;:</code>
                    Added
                    <code>name</code>
                    ,
                    <code>property</code>
                    , and
                    <code>scope</code>
                    attributes to the tag, so that the message source key can
                    be obtained dynamically from a bean or bean property.
                </li>
            </ul>

            <p>
                <strong>HTML Taglib Package Additions</strong>
            </p>
            <p>The following new features have been added to the
                <em>struts-html</em>
                custom tag library [
                <code>org.apache.struts.taglib.html</code>
                ]:
            </p>
            <ul>
                <li>
                    <code>&lt;options&gt;:</code>
                    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.
                </li>
                <li>
                    <code>&lt;html:option&gt; and &lt;html:options&gt;:</code>
                    Added 'style' and 'styleClass' attributes.
                </li>
                <li>
                    <code>&lt;html:optionsCollection&gt;:</code>
                    New tag providing a cleaner way of populating HTML options
                    from a collection.
                </li>
                <li>
                    <code>&lt;bean:message&gt;:</code>
                    Added 'name', 'property' and 'scope' attributes so that
                    the message resource key can be obtained dynamically from
                    a bean.
                </li>
                <li>
                    <code>&lt;html:messages&gt;:</code>
                    New tag to iterate through a message collection in the new
                    <code>ActionMessages</code>
                    class.
                </li>
                <li>
                    <code>ActionForm:</code>
                    Tag will now call
                    <code>reset()</code>
                    if it instantiates the ActionForm bean. This also requires
                    that the bean instantiated by the tag to be an
                    <code>ActionForm</code>
                    subclass.
                </li>
                <li>
                    <code>&lt;html:image>:</code>
                    Added the 'align' attribute.
                </li>
                <li>
                    <code>&lt;html:img>:</code>
                    Added the mouse event attributes ('onclick', 'ondblclick',
                    'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove',
                    'onmouseout').
                </li>
                <li>
                    <code>SubmitTag, SelectTag, LinkTag.java, CheckboxTag,
                        ButtonTag, ImageTag, RadioTag, and TextArea
                        tags:</code>
                    Added indexed property.
                </li>
            </ul>

            <p>
                <strong>Logic Taglib Package Additions</strong>
            </p>
            <p>The following new features have been added to the
                <em>struts-logic</em>
                custom tag library [
                <code>org.apache.struts.taglib.logic</code>
                ]:
            </p>
            <ul>
                <li>
                    <code>&lt;logic:empty&gt;</code>
                    and
                    <code>&lt;logic:notEmpty&gt;</code>
                    : New tags that are similar to
                    <code>&lt;logic:present&gt;</code>
                    and
                    <code>&lt;logic:notPresent&gt;</code>
                    except for the treatment of
                    empty strings.
                </li>
            </ul>

            <p>
                <strong>Template Taglib Package Additions</strong>
            </p>
            <p>The following new features have been added to the
                <em>struts-template</em>
                custom tag library
                [
                <code>org.apache.struts.taglib.template</code>
                ]:
            </p>
            <ul>
                <li>None.</li>
            </ul>

            <p>
                <strong>Documentation Additions</strong>
            </p>
            <p>The following new features have been added to the Struts
                Documentation
                application (and corresponding contents on the Struts web
                site):</p>
            <ul>
                <li>Version Differences: New section in Release Notes to link
                    to the JavaDocs for all Struts classes and members added
                    or changed between versions.</li>
                <li>User Guide Preface: New section to overview the enabling
                    technologies behind Struts.</li>
                <li>Developer Guides: Added "cover page" to guides. These then
                    link to the Package Descriptions and the API guides.</li>
                <li>HTML tag documentation: expanded to cover using indexed
                    properties with iterate.</li>
                <li>Site Menu: Removed separate links to taglib documentation,
                    since these are now in the Developer Guide.</li>
                <li>Newbie FAQ: The questions most likely to be asked by new
                    developers using Struts. Still under development.</li>
                <li>Kickstart FAQ: The questions most likely to be asked when
                    selecting Struts.</li>
                <li>1.0 JavaDoc: Added archival copy to web site for future
                    reference.</li>
                <li>The UserGuide "Building" pages: General revisions to
                    reflect new features and current practices.</li>
                <li>Installation: Updated instructions for SilverStream and
                    Resin. Add installation notes for Jetty. Added RexIP to
                    list of nominal containers.</li>
                <li>JavaDocs: New
                    <code>@since Struts 1.1</code>
                    tag to indicate new packages, classes, and members added
                    after the Struts 1.0.x version
                </li>
            </ul>

        </section>

        <section name="Operational Changes and Bug Fixes" href="Changes">

            <p>
                <strong>Struts Configuration Changes</strong>
            </p>
            <p>The following changes and bug fixes have occurred in the
                configuration
                files related to Struts:</p>
            <ul>
                <li>Deprecated (Struts 0.5) configuration file format: Remove
                    support.</li>
                <li>Deprecated (Struts 0.5) methods: Remove from
                    codebase.</li>
            </ul>
            <p>
                <strong>Added Config Package</strong>
            </p>
            <ul>
                <li>ControllerConfig: Added inputForward property to indicate
                    that ActionMapping.input is a forward rather than a
                    URI.</li>
                <li>ControllerConfig: Added forwardPattern and inputPattern to
                    help manage page directories in application modules.</li>
                <li>Added package to provide more flexibility in configuring
                    the controller and to provide support for modular
                    applications</li>
            </ul>
            <p>
                <strong>Action Package Changes</strong>
            </p>
            <p>The following changes and bug fixes have occurred in the basic
                controller framework (package
                <code>org.apache.struts.action</code>
                ):
            </p>
            <ul>
                <li>ActionMapping: input property may now refer to an
                    ActionForward rather than a module-relative path if
                    inputForward is set to true on the module's
                    ControllerConfig bean
                    [org.apache.struts.config.ControllerConfig.</li>
                <li>ActionServlet: Added convertNull parameter to simulate the
                    Struts 1.0 behavior when populating forms. If set to true,
                    the numeric Java wrapper class types (like
                    java.lang.Integer) will default to null (rather than
                    0).</li>
                <li>ActionServlet: Added "config/$foo" parameter and
                    deprecated several others in favor of components in the
                    new config package.</li>
                <li>ActionForms and related classes: now use a StringBuffer
                    when responding a toString request in order to conserve
                    resources.</li>
                <li>LookupDispatchAction: Added standard Action to help select
                    between internationalized buttons.</li>
                <li>ActionForm class: Modified to use ActionServletWrapper
                    rather than expose ActionServlet.</li>
                <li>ActionServletWrapper class: Added for use by ActionForm to
                    prevent the Public String properties of ActionServlet from
                    being changed via a query string.</li>
                <li>Action.MAPPING_KEY request attribute: Unconditionally pass
                    the selected mapping as a request attribute
                    ("org.apache.struts.action.mapping.instance") even if no
                    form bean is specified.</li>
                <li>ActionServlet: Avoid a NullPointerException in corner
                    cases caused by failed initialization of servlet.</li>
                <li>ActionForm class: Now truly serializable, because
                    the two non-serializable instance variables (servlet and
                    multipartRequestHandler) have been made transient.
                    However, if you
                    actually do serialize and deserialize such instances, it
                    is your
                    responsibility to reset these two properties.</li>
                <li>ActionMessages and ActionErrors: The initial order a
                    property/key is added in is now retained.</li>
            </ul>

            <p>
                <strong>Upload Package Changes</strong>
            </p>
            <p>The following changes and bug fixes have occurred in the file
                upload
                package (package
                <code>org.apache.struts.upload</code>
                ):
            </p>
            <ul>
                <li>CommonsMultipartRequestHandler: New implementation of file
                    upload based
                    on the Jakarta Commons FileUpload package. This new
                    implementation is
                    now the default.</li>
                <li>BufferedMultipartInputStream: Fixed lost byte
                    problem.</li>
                <li>ArrayIndexOutOfBoundsException: Fixed situations where
                    this was known to occur.</li>
                <li>Multipart requests: Better reporting for premature closing
                    of input streams while reading multipart requests.</li>
                <li>New line characters: Additional fix for file corruption
                    problem with uploads and new line characters.</li>
            </ul>

            <p>
                <strong>Utility Package Changes</strong>
            </p>
            <p>The following changes and bug fixes have occurred in the
                utilities
                (package
                <code>org.apache.struts.util</code>
                ):
            </p>
            <ul>
                <li>RequestUtils: Added support for forwardPattern,
                    pagePattern, and inputForward properties on
                    ControllerConfig.</li>
                <li>GenericDataSource: Deprecated and modified to act as a
                    thin wrapper around
                    [
                    <code>org.apache.commons.dbpc.BasicDataSource</code>
                    ].
                    Replaced by direct use of BasicDataSource or other
                    compatible component.
                </li>
                <li>RequestUtils class: Modify to use ActionServletWrapper
                    rather than expose ActionServlet.</li>
                <li>Added error message for the getActionErrors and
                    getActionMessages method.</li>
                <li>getActionErrors and getActionMessages: Added methods to
                    generate the correct corresponding
                    object based on the object retrieved from request scope
                    based on the key passed in.</li>
                <li>ActionErrors or ActionMessages: The logic for creating one
                    of these objects has been moved
                    to a utility method in RequestUtils.</li>
                <li>JspException message: Now generated in RequestUtils.</li>
                <li>ConvertUtils.convertCharacter(): Will now detect empty
                    strings and return the default value.</li>
            </ul>

            <p>
                <strong>Bean Taglib Package Changes</strong>
            </p>
            <p>The following changes and bug fixes have occurred in the
                <em>struts-bean</em>
                custom tag library
                [
                <code>org.apache.struts.taglib.bean</code>
                ]:
            </p>
            <ul>
                <li>&lt;html:errors&gt;: When the property tag is
                    specified, errors are no longer printed if the specified
                    property
                    has no errors. Previously errors were always printed !
                    Future
                    enhancements would include additional attributes to always
                    turn
                    off the header or footer.</li>
                <li>Made the remaining helper methods "protected" rather than
                    "private".</li>
            </ul>

            <p>
                <strong>HTML Taglib Package Changes</strong>
            </p>
            <p>The following changes and bug fixes have occurred in the
                <em>struts-html</em>
                custom tag library (package
                <code>org.apache.struts.taglib.html</code>
                ):
            </p>
            <ul>
                <li>FormTag: Fixed to exclude query string when identifying
                    action mapping name.</li>
                <li>ImgTag: Correctly URLEncode the query string parameter
                    value even if there is only a single parameter.</li>
                <li>MultiboxTag.doAfterBody(): Corrected to return SKIP_BODY
                    instead of SKIP_PAGE.</li>
            </ul>

            <p>
                <strong>Logic Taglib Package Changes</strong>
            </p>
            <p>The following changes and bug fixes have occurred in the
                <em>struts-logic</em>
                custom tag library (package
                <code>org.apache.struts.taglib.logic</code>
                ):
            </p>
            <ul>
                <li>None.</li>
            </ul>

            <p>
                <strong>Documentation Application Changes</strong>
            </p>
            <p>The following changes and bug fixes to the Struts Documentation
                application (and corresponding contents on the Struts web
                site) have
                occurred:</p>
            <ul>
                <li>Reorganized Resources into separate pages..</li>
                <li>In the Tag Developers Guide, add more detail regarding
                    file upload requirements.</li>
                <li>In Building View Components, clarify that additional i18n
                    support may be provided by the browser, and is outside the
                    scope of the framework.</li>
                <li>In Building Controller Components, document 'validating'
                    init-param, add defaults for various parameters, clarify
                    that some web.xml settings are not Struts-specific.</li>
                <li>Tag library documentation: Moved under User's Guide.</li>
                <li>Reorganized to separate 1.0 material from nightly build
                    material.</li>
            </ul>

            <p>
                <strong>MailReader Example Application Changes</strong>
            </p>
            <p>The following changes and bug fixes to the Struts MailReader
                Example Application
                have occurred:</p>
            <ul>
                <li>Add Russian and Japanese translations of the application
                    resources and set the character set for the example JSP
                    pages to "UTF-8" so that it can display either English or
                    Japanese.</li>
                <li>Exchange "name" for "attribute" properties for Edit
                    mappings in Struts configuration file.</li>
                <li>Remove references to saving database data from "tour"
                    document, since this functionality was removed.</li>
            </ul>

            <p>
                <strong>Template Example Application Changes</strong>
            </p>
            <p>The following changes and bug fixes to the Struts Template
                Example
                Application have occurred:</p>
            <ul>
                <li>None.</li>
            </ul>

            <p>
                <strong>Exercise Taglib Example Application Changes</strong>
            </p>
            <p>The following changes and bug fixes to the Struts Exercise
                Taglib Example
                Application have occurred:</p>
            <ul>
                <li>Added test case for &lt;html:select> using &lt;html:options>
                    based on a collection
                    saved in the page context.</li>
            </ul>

        </section>

        <section name="What's different?" href="diff">

            <p>This section provides links to the Struts JavaDoc for any
                classes that have
                been added or deprecated since the Struts 1.0 release.
            </p>

            <p>
                <strong>Previously deprecated classes and packages removed in
                    Struts 1.1</strong>
            </p>
            <ul>
                <li>Removed:
                    <code>org.apache.struts.utils.BeanUtils</code>
                    ,
                    <code>org.apache.struts.utils.ConvertUtils</code>
                    , and
                    <code>org.apache.struts.utils.PropertyUtils</code>
                    - replaced by
                    <a href="http://jakarta.apache.org/commons/beanutils.html">
                        <code>org.apache.commons.beanutils</code>
                    </a>
                </li>
                <li>Removed:
                    <code>org.apache.struts.util.ArrayStack</code>
                    ,
                    <code>org.apache.struts.util.FastArrayList</code>
                    ,
                    <code>org.apache.struts.util.FastHashMap</code>
                    ,
                    <code>org.apache.struts.util.FastTreeMap</code>
                    - replaced by
                    <a href="http://jakarta.apache.org/commons/collections.html">
                        <code>org.apache.commons.collections</code>
                    </a>
                </li>
                <li>Removed:
                    <code>org.apache.struts.digester.*</code>
                    - replaced by
                    <a href="http://jakarta.apache.org/commons/digester.html">
                        <code>org.apache.commons.digester</code>
                    </a>
                </li>
                <li>Removed: The
                    <code>struts-config.dtd</code>
                    - Replaced by
                    <a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
                        <code>struts-config_1_1.dtd</code>
                    </a>
                    .
                </li>
                <li>Removed: The omnibus "struts" taglib and its associated
                    TLD - replaced by separate bean, logic, and html
                    taglibs.</li>
                <li>Removed: The "form" taglib and its associated TLD -
                    replaced by (renamed as) the html taglib.</li>
            </ul>

            <p>
                <strong>Packages added in Struts 1.1</strong>
            </p>

            <ul>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/config/package-summary.html">
                        config</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/package-summary.html">
                        taglib.nested</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/bean/package-summary.html">
                        taglib.nested.bean</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/html/package-summary.html">
                        taglib.nested.html</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/logic/package-summary.html">
                        taglib.nested.logic</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/validator/package-frame.html">
                        validator</a>
                </li>
            </ul>

            <p>
                <strong>Classes added in Struts 1.1</strong>
            </p>
            <p>action</p>
            <ul>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessage.html">
                        ActionMessage</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMessages.html">
                        ActionMessages</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionForm.html">
                        DynaActionForm</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionFormClass.html">
                        DynaActionFormClass</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ExceptionHandler.html">
                        ExceptionHandler</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/RequestProcessor.html">
                        RequestProcessor</a>
                </li>
            </ul>
            <p>actions</p>
            <ul>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/actions/LookupDispatchAction.html">
                        LookupDispatchAction</a>
                </li>
            </ul>
            <p>taglib.html</p>
            <ul>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/FrameTag.html">
                        FrameTag</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/JavascriptValidatorTag.html">
                        JavascriptValidatorTag</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/MessagesTag.html">
                        MessagesTag</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/OptionsCollectionTag.html">
                        OptionsCollectionTag</a>
                </li>
            </ul>
            <p>taglib.logic</p>
            <ul>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/EmptyTag.html">
                        EmptyTag</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesNotPresentTag.html">
                        MessagesNotPresentTag</a>
                </li>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/MessagesPresentTag.html">
                        MessagesPresentTag</a>
                </li>
            </ul>
            <p>upload</p>
            <ul>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/upload/CommonsMultipartRequestHandler.html">
                        CommonsMultipartRequestHandler</a>
                </li>
            </ul>
            <p>util</p>
            <ul>
                <li>
                    <a href="http://jakarta.apache.org/struts/api/org/apache/struts/util/LabelValueBean.html">
                        LabelValueBean</a>
                </li>
            </ul>
            <p>
                <strong>Classes with members added in Struts 1.1</strong>
            </p>
            <p>
                <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">
                    action.Action</a>
            </p>
            <ul>
                <li>ACTION_SERVLET_KEY</li>
                <li>APPLICATION_KEY</li>
                <li>MESSAGE_KEY</li>
                <li>PLUG_INS_KEY</li>
                <li>REQUEST_PROCESSOR_KEY</li>
                <li>execute</li>
                <li>getResources(javax.servlet.http.HttpServletRequest)</li>
                <li>saveMessages</li>
            </ul>
            <p>
                <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">
                    action.A</a>
                <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">
                    ctionServlet</a>
            </p>
            <ul>
                <li>configDigester</li>
                <li>convertHack</li>
                <li>log</li>
                <li>processor</li>
                <li>getInternal</li>
                <li>destroyApplications</li>
                <li>destroyConfigDigester</li>
                <li>getApplicationConfig</li>
                <li>getRequestProcessor</li>
                <li>initApplicationConfig</li>
                <li>initApplicationDataSources</li>
                <li>initApplicationPlugIns</li>
                <li>initApplicationMessageResources</li>
                <li>initConfigDigester</li>
                <li>methods created for backward-compatiblity only
                    <ul>
                        <li>defaultControllerConfig</li>
                        <li>defaultFormBeansConfig</li>
                        <li>defaultForwardsConfig</li>
                        <li>defaultMappingsConfig</li>
                        <li>defaultMessageResourcesConfig</li>
                    </ul>
                </li>
            </ul>
            <p>
                <a href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/BaseHandlerTag.html">
                    taglib.html.BaseHandlerTag</a>
            </p>
            <ul>
                <li>indexed</li>
                <li>setIndexed</li>
                <li>getIndexed</li>
            </ul>
            <p>
                <strong>Classes deprecated between Struts 1.0 and Struts
                    1.1</strong>
            </p>
            <p>action</p>
            <ul>
                <li>ActionException</li>
                <li>ActionFormBeans</li>
                <li>ActionForwards</li>
                <li>ActionMappings</li>
            </ul>
            <p>
                <strong>Classes with members deprecated between Struts 1.0 and
                    Struts 1.1</strong>
            </p>
            <p>
                <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/Action.html">
                    action.Action</a>
            </p>

            <ul>
                <li>FORM_BEANS_KEY</li>
                <li>FORWARDS_KEY</li>
                <li>MAPPINGS_KEY</li>
                <li>getResources()</li>
                <li>perform</li>
            </ul>
            <p>
                <a href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionServlet.html">
                    ActionServlet</a>
            </p>
            <ul>
                <li>findDataSource</li>
                <li>findFormBean</li>
                <li>findForward</li>
                <li>findMapping</li>
                <li>initDataSources</li>
                <li>methods created for backward-compatiblity only
                    <ul>
                        <li>defaultControllerConfig</li>
                        <li>defaultFormBeansConfig</li>
                        <li>defaultForwardsConfig</li>
                        <li>defaultMappingsConfig</li>
                        <li>defaultMessageResourcesConfig</li>
                    </ul>
                </li>
            </ul>

            <p>Next:
                <a href="installation.html">Installation</a>
            </p>

        </section>

        <section name="Known Issues" href="Bugs">

            <p>The following known issues will be addressed before Final
                Release of
                Struts 1.1. The numbers in parentheses are for the
                corresponding entries
                in the
                <a href="http://issues.apache.org/bugzilla">Bugzilla</a>
                bug
                tracking system.
            </p>

            <strong>Custom Tags</strong>
            <ul>
                <li>The &lt;html:form&gt; tag generates incorrect JavaScript
                    when the
                    focus is to be set on a radio button.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=1586">
                        #1586</a>
                    )
                </li>
            </ul>

            <strong>Documentation</strong>
            <ul>
                <li>Some parts of the documentation are incomplete, especially
                    for new
                    features in this release. These sections are marked TODO.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10537">
                        #10537</a>
                    )
                </li>
            </ul>

            <strong>Example Webapps</strong>
            <ul>
                <li>The
                    <em>struts-blank</em>
                    sample webapp fails to run due to problems
                    accessing message resources.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10955">
                        #10955</a>
                    )
                </li>
            </ul>

            <strong>Validator Framework</strong>
            <ul>
                <li>Validator generates incorrect JavaScript for the &lt;select&gt;
                    element.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7353">
                        #7353</a>
                    )
                </li>
                <li>Validator range checking supports only integer values, and
                    not other
                    numeric values such as floats and doubles.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10191">
                        #10191</a>
                    )
                </li>
                <li>Validator does not work with Struts application modules
                    other than
                    the default module.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10348">
                        #10348</a>
                    )
                </li>
                <li>Validator does not successfully validate empty date
                    fields.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10349">
                        #10349</a>
                    )
                </li>
                <li>Validator does not validate data when using
                    DynaValidatorActionForm.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10432">
                        #10432</a>
                    )
                </li>
                <li>Validator plugin does not correctly configure multiple
                    validation files.
                    (
                    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10584">
                        #10584</a>
                    )
                </li>
            </ul>

            <p>Next:
                <a href="installation.html">Installation</a>
            </p>

        </section>

    </body>

</document>
