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

    <properties>
        <title>Struts Release Notes (Version 1.1 Release Candidate 1)</title>
    </properties>

    <body>

        <section name="6.1 Release Notes" href="release_notes">
            <subsection name="Beta Notes" href="beta">

                <p>This section contains the release notes for
                    <strong>nightly build</strong>
                    of the Struts Framework,
                    for changes that have taken place since
                    <a href="release-notes-1_1-b2.html">Version 1.1 beta 2</a>
                    was released. For a complete list of changes since the
                    last
                    production release, see the
                    <a href="#Introduction">Introduction</a>
                </p>

            </subsection>

            <subsection name="Beta Fixes" href="beta.Changes">

                <p>
                    <strong>ApplicationConfig:</strong>
                    In Struts 1.1. beta 3, the ApplicationConfig class
                    is renamed to ModuleConfig, to conform with the venacular.
                </p>

                <p>
                    <strong>Dyna*Form:</strong>
                    In Struts 1.1. beta 3, the reset method was changed so
                    that
                    it conforms to the original ActionForm implementation.
                </p>

                <p>
                    <strong>Blank application:</strong>
                    Fixed configuration problem with Struts Blank
                    application.
                </p>

            </subsection>

            <subsection name="Introduction" href="Introduction">

                <p>The remainder of this document contains the release notes
                    for
                    <strong>nightly build</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>

            </subsection>


            <subsection 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>

            </subsection>

            <subsection 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.dbpc</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>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 - An extension of the Commons Scaffold
                        toolkit of reusable
                        classes for building web applications.</li>
                    <li>Struts-el - The optional Struts-el taglib makes it
                        easy to use Struts
                        with JSTL (container with servlet 2.3 support
                        required).</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;html:link&gt;:</code>
                        Added 'action' attribute.
                    </li>
                    <li>
                        <code>&lt;html: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>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.</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>

            </subsection>

            <subsection 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:link> using "action"
                        attribute.</li>
                    <li>Added test case for &lt;html:select> using &lt;html:options>
                        based on a collection
                        saved in the page context.</li>
                </ul>

            </subsection>

            <subsection 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>

            </subsection>

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

        </section>
    </body>

</document>
