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

    <properties>
        <title>Struts Release Notes (current nightly build)</title>
    </properties>

    <body>

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

            <p>This document contains the release notes for
                <strong>Version 1.1 Beta 1</strong>
                of the Struts Framework,
                and covers changes that have taken place since
                <a href="release-notes-1_0_1.html">Version 1.0.1</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.0 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.
                            <strong>NOTE</strong>
                            - The struts-form.tld
                            file is deprecated; you should use the
                            struts-html.tld file
                            instead.
                        </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 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>
                <strong>DEPRECATIONS</strong>
                :
            </p>
            <ul>
                <li>
                    <code>struts-config.dtd</code>
                    in favor of
                    <code>struts-config_1_1.dtd</code>
                    .
                </li>
            </ul>

            <p>
                <strong>COMMONS PACKAGES</strong>
                :
                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. The following Commons packages contain the
                replacements for the
                corresponding Struts 1.0 classes:
            </p>
            <ul>
                <li>
                    <strong>BeanUtils Package</strong>
                    (org.apache.commons.beanutils) -
                    <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>
                    (org.apache.commons.collections) -
                    <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>
                    -
                    (org.apache.commons.digester) -
                    <code>org.apache.struts.digester.*</code>
                    .
                </li>
            </ul>

            <p>
                <strong>XML PARSER PREREQUISITE UPDATED</strong>
                : Struts now depends
                on an XML parser that conforms to the JAXP/1.1 (rather than
                JAXP/1.0)
                APIs. Parser known to work include the JAXP/1.1 reference
                implementation,
                and Xerces 1.3.1.
            </p>

            <p>
                <strong>CONTRIB Directory</strong>
                :
                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>ValidatorForm - Client and Server-side validation
                    library.</li>
                <li>Tiles - Advanced templating library (see
                    Struts-Tiles.war).</li>
                <li>Service Manager - Add custom services without subclassing
                    controller.</li>
            </ul>

            <p>
                <strong>UNIT TESTING SUPPORT</strong>
                : Support for running unit tests
                on Struts components and custom tags is being added, utilizing
                the
                <a href="http://jakarta.apache.org/cactus/">Jakarta Cactus</a>
                product.
            </p>

            <p>The following new features have been added to the basic
                controller
                framework (package
                <code>org.apache.struts.action</code>
                ):
            </p>
            <ul>
                <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>The following new features have been added to the utility
                classes
                (package
                <code>org.apache.struts.util</code>
                ):
            </p>
            <ul>
                <li>LocalStrings: Correct message regarding replaceable
                    parameter so that it does not append an extraneous
                    character.</li>
                <li>Add LabelValueBean class. This defines a collection of
                    name/value pairs that can be used with the &lt;html:options&gt;
                    tag, and elsewhere.</li>
                <li>MessageResources: Escape any single quote characters that
                    are included in the specified message string.</li>
                <li>Allow a transaction token to be the only parameter in
                    computeParameters().</li>
                <li>Change RequestUtils to encode ampersands when building a
                    query string.</li>
            </ul>

            <p>The following new features have been added to the
                <em>struts-bean</em>
                custom tag library (package
                <code>org.apache.struts.taglib.bean</code>
                ):
            </p>
            <ul>
                <li>Add format, locale and bundle attributes to bean:write to
                    support values formatting according to current
                    user locale, format string from attribute or format string
                    from string resources.</li>
                <li>Correct the generated scripting variable type when the
                    &lt;bean:cookie>, &lt;bean:header>, or &lt;bean:parameter>
                    tag is used with the "multiple" attribute.</li>
                <li>Added
                    <code>name</code>
                    ,
                    <code>property</code>
                    , and
                    <code>scope</code>
                    attributes to the
                    <code>&lt;bean:message&gt;</code>
                    tag, so that the message source key can be obtained
                    dynamically from
                    a bean or bean property.
                </li>
            </ul>

            <p>The following new features have been added to the
                <em>struts-html</em>
                custom tag library (package
                <code>org.apache.struts.taglib.html</code>
                ):
            </p>
            <ul>
                <li>On the Options tag, if the property specified by the
                    "property" attribute returns null, it now throws an error
                    message that indicates what the real problem is, rather
                    than causing an NPE.</li>
                <li>Added 'style' and 'styleClass' attributes for &lt;html:option&gt;
                    and &lt;html:options&gt; tags.</li>
                <li>Added 'name', 'property' and 'scope' attributes to
                    <code>&lt;bean:message&gt;</code>
                    so that
                    the message resource key can be obtained dynamically from
                    a bean.
                </li>
                <li>Added a new
                    <code>&lt;html:messages&gt;</code>
                    tag to iterate through
                    a message collection in the new
                    <code>ActionMessages</code>
                    class.
                </li>
                <li>
                    <code>ActionForm</code>
                    will now call
                    <code>reset()</code>
                    if it
                    instantiates the ActionForm bean.
                </li>
                <li>Added indexed property to the SubmitTag, SelectTag,
                    LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag,
                    and TextArea.Tag.</li>
            </ul>

            <p>The following new features have been added to the
                <em>struts-logic</em>
                custom tag library (package
                <code>org.apache.struts.taglib.logic</code>
                ):
            </p>
            <ul>
                <li>Added
                    <code>&lt;logic:empty&gt;</code>
                    and
                    <code>&lt;logic:notEmpty&gt;</code>
                    tags, which 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>The following new features have been added to the
                <em>struts-template</em>
                custom tag library (package
                <code>org.apache.struts.taglib.template</code>
                ):
            </p>
            <ul>
                <li>None.</li>
            </ul>

            <p>The following new features have been added to the Struts
                Documentation
                application (and corresponding contents on the Struts web
                site):</p>
            <ul>
                <li>Move Tag Library documentation into User's Guide.</li>
                <li>Added Kickstart FAQ.</li>
                <li>Added Reference copy of 1.0 JavaDoc.</li>
                <li>Revised the example page in the User's Guide (Building
                    View Components) to reflect current practice.</li>
                <li>Revised installation instructions for SilverStream and
                    Resin.</li>
            </ul>

        </section>


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

            <p>The following changes and bug fixes have occurred in the
                configuration
                files related to Struts:</p>
            <ul>
                <li>Remove deprecated support for the old (Struts 0.5)
                    configuration file
                    format.</li>
            </ul>
            <p>The following changes and bug fixes have occurred in the basic
                controller framework (package
                <code>org.apache.struts.action</code>
                ):
            </p>
            <ul>
                <li>Add InvokeAction and CreateActionForm methods to allow
                    direct chaining of Actions.</li>
                <li>Add ContextHelper to expose framework elements to
                    alternate presentation layers.</li>
                <li>ActionForms and related classes now use a StringBuffer
                    when responding a toString request in order to conserve
                    resources.</li>
                <li>Add standard LookupDispatchAction to help select between
                    internationalized buttons.</li>
                <li>Modify ActionForm class to use ActionServletWrapper rather
                    than expose ActionServlet.</li>
                <li>Add ActionServletWrapper class. Used by ActionForm to
                    prevent the Public String properties of ActionServlet from
                    being changed via a query string.</li>
                <li>Unconditionally pass the selected mapping as a request
                    attribute under key Action.MAPPING_KEY, even if no form
                    bean is specified.</li>
                <li>Avoid a NullPointerException in corner cases caused by
                    failed initialization of ActionServlet.</li>
                <li>The
                    <code>ActionForm</code>
                    class is 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>Removed deprecated Struts 0.5 methods, and support for the
                    Struts 0.5
                    configuration file format.</li>
                <li>The initial order a property/key is added in is now
                    maintained by ActionMessages class.</li>
            </ul>

            <p>The following changes and bug fixes have occurred in the file
                upload
                package (package
                <code>org.apache.struts.upload</code>
                ):
            </p>
            <ul>
                <li>Correct MultiboxTagdoAfterBody() to return SKIP_BODY
                    instead of SKIP_PAGE.</li>
                <li>Fixed lost byte problem in
                    BufferedMultipartInputStream</li>
                <li>Fixed ArrayIndexOutOfBoundsException situations</li>
                <li>Better reporting for premature closing of input streams
                    while reading
                    multipart requests.</li>
                <li>Additional fix for file corruption problem with uploads
                    and new line characters.</li>
            </ul>

            <p>The following changes and bug fixes have occurred in the
                utilities
                (package
                <code>org.apache.struts.util</code>
                ):
            </p>
            <ul>
                <li>Modify RequestUtils class to use ActionServletWrapper
                    rather than expose ActionServlet.</li>
                <li>Added error message for the getActionErrors and
                    getActionMessages method.</li>
                <li>Added a getActionErrors and getActionMessages methods to
                    generate the correct corresponding object based on the
                    object retrieved from request scope based on the key
                    passed in.</li>
                <li>The logic for creating an ActionErrors or ActionMessages
                    object has been moved to a utility method in RequestUtils.
                    The JspException message is also generated in
                    RequestUtils.</li>
                <li>
                    <code>ConvertUtils.convertCharacter()</code>
                    will now detect empty strings and return the default
                    value.
                </li>
            </ul>

            <p>The following changes and bug fixes have occurred in the
                <em>struts-bean</em>
                custom tag library (package
                <code>org.apache.struts.taglib.bean</code>
                ):
            </p>
            <ul>
                <li>The
                    <code>&lt;html:errors&gt;</code>
                    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>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>Fixed FormTag to exclude query string when identifying
                    action mapping name.</li>
                <li>Added the 'align' attribute to the &lt;html:image>
                    tag.</li>
                <li>Added indexed attribute to ImageTag, RadioTag, and
                    TextAreaTag.</li>
                <li>Added MessagesTag.</li>
                <li>Correctly URLEncode the query string parameter value on
                    ImgTag, even if there is only a single parameter.</li>
            </ul>

            <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>The following changes and bug fixes to the Struts Documentation
                application (and corresponding contents on the Struts web
                site) have
                occurred:</p>
            <ul>
                <li>In the HTML tag documentation, expand to cover using
                    indexed properties with iterate.</li>
                <li>Add installation notes for Jetty.</li>
                <li>In the Tag Developers Guide, add more detail regarding
                    file upload requirements.</li>
                <li>In the Introduction, added references to basic background
                    material.</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>Reorganized to separate 1.0 material from nightly build
                    material.</li>
                <li>Expanded Resources section.</li>
                <li>Various updates regarding other release notes.</li>
            </ul>

            <p>The following changes and bug fixes to the Struts 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>The following changes and bug fixes to the Struts Template
                Example
                Application have occurred:</p>
            <ul>
                <li>None.</li>
            </ul>

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

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

        </section>

    </body>

</document>
