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

    <properties>
        <title>Struts Release Notes (Version 1.0-beta-2)</title>
    </properties>

    <body>

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

            <p>This document contains the release notes for
                <strong>Version 1.0-beta-2</strong>
                of the Struts Framework,
                and covers changes that have taken place since
                <a href="release-notes-1_0-b1.html">Version 1.0-beta-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 1.0:</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>struts.jar</code>
                            - JAR file that contains the compiled
                            Java classes for both version 0.5 and 1.0 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_0.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>

            <p>For backwards compatibility only, the binary distribution also
                includes the following files that conform to the Struts 0.5
                milestone
                release APIs. Usage of these files and APIs is deprecated, and
                they
                will be removed from releases after Struts 1.0:</p>
            <ul>
                <li>
                    <code>lib/</code>
                    - Directory containing files you will need in
                    your own applications. The individual files of interest
                    are:
                    <ul>
                        <li>
                            <code>struts.jar</code>
                            - JAR file that contains the compiled
                            Java classes for both version 0.5 and 1.0 of
                            Struts. You must
                            place this file in the
                            <code>/WEB-INF/lib</code>
                            directory of
                            your web application.
                        </li>
                        <li>
                            <code>struts.tld</code>
                            - The tag library descriptor file for
                            the 0.5 version of the Struts tags. You must place
                            this file
                            in the
                            <code>/WEB-INF</code>
                            directory of your web application,
                            and reference it with appropriate
                            <code>&lt;taglib&gt;</code>
                            directives in your web.xml file.
                        </li>
                    </ul>
                </li>
            </ul>

        </section>


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

            <p>
                <strong>DEPRECATIONS</strong>
                - The entire custom tag library
                that is documented in
                <code>struts.tld</code>
                has been deprecated.
                These tags correspond to the Struts 0.5 functionality that is
                also
                deprecated, and have been replaced (and considerably enhanced)
                in
                the various individual tag libraries.
            </p>

            <p>The build procedure for compiling the Struts source
                distribution
                has been revised, and now depends on having
                <strong>Ant 1.2</strong>
                (or later) installed, with the
                <code>$ANT_HOME/bin</code>
                directory
                on your path. Further information can be found in the
                <a href="installation.html">Installation</a>
                documentation.
            </p>

            <p>The following new features have been added to the basic
                controller
                framework (package
                <code>org.apache.struts.action</code>
                ):
            </p>
            <ul>
                <li>You can now specify that an
                    <code>&lt;action&gt;</code>
                    element should
                    invoke an existing servlet or JSP page resource, rather
                    than calling an
                    <code>Action</code>
                    class, by using the
                    <code>include</code>
                    attribute
                    rather than the
                    <code>type</code>
                    attribute. The standard form bean
                    processing provided by the controller is still performed
                    first, if you
                    have configured it, so the included resource can benefit
                    from this
                    processing if it wishes to.
                </li>
                <li>The
                    <code>initDataSources()</code>
                    method can now throw a
                    <code>ServletException</code>
                    to report that an initialization error
                    has occurred. Previously, such errors were logged but
                    otherwise
                    ignored.
                </li>
                <li>It is now possible to integrate business logic that is
                    already
                    encapsulated as a servlet or JSP page, via use of two new
                    standard
                    actions:
                    <code>org.apache.struts.actions.ForwardAction</code>
                    and
                    <code>org.apache.struts.actions.IncludeAction</code>
                    . These actions
                    let you take advantage of the standard processing
                    performed by the
                    controller servlet (including form bean population and
                    calling the
                    <code>validate()</code>
                    method), but not have to write Java code to
                    perform (or wrap) the required business logic.
                </li>
                <li>A wrapper class has been added around the standard
                    <code>HttpServletRequest</code>
                    for handling multipart requests as
                    identically as possible to standard requests, including
                    processing
                    request parameters, populating form beans, transaction
                    tokens, and
                    checking for cancellations.
                </li>
            </ul>

            <p>The following new features have been added to the utility
                classes
                (package
                <code>org.apache.struts.util</code>
                ):
            </p>
            <ul>
                <li>
                    <code>PropertyUtils</code>
                    can now correctly locate public methods
                    defined in a nested interface that is implemented by a
                    bean.
                </li>
                <li>
                    <code>PropertyUtils</code>
                    methods now throw
                    <code>IllegalArgumentException</code>
                    when you pass a null
                    <code>bean</code>
                    reference or property
                    <code>name</code>
                    .
                </li>
                <li>
                    <strong>DEPRECATIONS</strong>
                    - The following classes have been
                    deprecated in their entirety, because they will be
                    replaced by
                    corresponding classes (with identical functionality) from
                    the
                    <a href="http://jakarta.apache.org/commons">Jakarta
                        Commons Project</a>
                    at some point after Struts 1.0 final release. The only
                    change that
                    will ultimately be required in user code is to change the
                    package
                    names on the
                    <code>import</code>
                    clauses:
                    <ul>
                        <li>
                            <code>org.apache.struts.util.FastArrayList</code>
                        </li>
                        <li>
                            <code>org.apache.struts.util.FastHashMap</code>
                        </li>
                        <li>
                            <code>org.apache.struts.util.FastTreeMap</code>
                        </li>
                        <li>
                            <code>org.apache.struts.util.BeanUtils</code>
                        </li>
                        <li>
                            <code>org.apache.struts.util.ConvertUtils</code>
                        </li>
                        <li>
                            <code>org.apache.struts.util.PropertyUtils</code>
                        </li>
                    </ul>
                </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>The
                    <code>&lt;html:link&gt;</code>
                    tag now accepts an optional
                    <code>anchor</code>
                    attribute, to allow the inclusion of a
                    (possibly calculated) anchor ("#xxx") in the generated
                    hyperlink.
                </li>
                <li>The
                    <code>&lt;html:base&gt;</code>
                    tag now accepts an optional
                    <code>target</code>
                    attribute.
                </li>
                <li>The
                    <code>&lt;html:image&gt;</code>
                    tag now accepts an optional
                    <code>border</code>
                    attribute, to define the border with around
                    this image.
                </li>
                <li>You can now request that the
                    <code>&lt;html:link&gt;</code>
                    tag
                    include any current transaction control token in the
                    generated
                    hyperlink, by specifying the
                    <code>transaction</code>
                    attribute
                    with a value of
                    <code>true</code>
                    .
                </li>
                <li>The
                    <code>&lt;html:options&gt;</code>
                    tag now supports Enumeration
                    for the
                    <code>collection</code>
                    property.
                </li>
                <li>The
                    <code>&lt;html:form&gt;</code>
                    tag now creates attributes for
                    the tag itself, and the form bean, in request scope
                    instead of
                    page scope. Among other benefits, this allows you to nest
                    the
                    fields of a form inside a separate page that is accessed
                    via a
                    template or a
                    <code>&lt;jsp:include&gt;</code>
                    tag.
                </li>
                <li>The
                    <code>styleId</code>
                    attribute has been added to all of the
                    tags where the corresponding
                    <code>id</code>
                    tag is relevant, to
                    identify a specific tag for the purposes of stylesheet
                    references.
                </li>
                <li>The
                    <code>&lt;html:file&gt;</code>
                    tag now supports the
                    <code>size</code>
                    attribute to set the size of the file list
                    field.
                </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>The
                    <code>&lt;logic:iterate&gt;</code>
                    tag now supports Enumeration
                    for the
                    <code>collection</code>
                    property.
                </li>
                <li>The
                    <code>&lt;logic:iterate&gt;</code>
                    tag now exposes the current
                    iteration index to nested tags, through a call to the
                    <code>getIndex()</code>
                    method.
                </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>Attribute getter methods have been added to all of the
                    custom
                    tag implementation classes to facilitate reuse.</li>
                <li>The
                    <code>&lt;template:get&gt;</code>
                    tag now has an optional
                    "flush" attribute that causes the response to be committed
                    prior
                    to performing the include, if set to "true". This allows
                    working
                    around problems on broken servlet containers.
                </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>Platform specific installation notes for a wide variety of
                    application
                    server and servlet container environments have been
                    accumulated and
                    published.</li>
            </ul>

        </section>


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

            <p>The following changes and bug fixes have occurred in the basic
                controller framework (package
                <code>org.apache.struts.action</code>
                ):
            </p>
            <ul>
                <li>
                    <code>DiskMultipartRequestHandler</code>
                    now tries to retrieve the
                    temporary directory provided by the servlet container
                    before all other
                    possible temporary directories.
                </li>
            </ul>

            <p>The following changes and bug fixes have occurred in the
                utilities
                (package
                <code>org.apache.struts.util</code>
                ):
            </p>
            <ul>
                <li>The
                    <code>computeURL()</code>
                    method now returns a
                    <code>MalformedURLException</code>
                    if a URL cannot be created.
                    Previously, this case returned
                    <code>null</code>
                    with no error
                    message, making some problems difficult to track down.
                </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>The
                    <code>&lt;html:image&gt;</code>
                    tag now correctly generates a
                    closing double quote on the
                    <code>name</code>
                    attribute.
                </li>
                <li>The
                    <code>&lt;html:form&gt;</code>
                    tag now generates a hyperlink
                    that includes any query parameters that were included in
                    the original
                    hyperlink value.
                </li>
                <li>The
                    <code>&lt;html:link&gt;</code>
                    tag now correctly places any
                    specified anchor ("#xxx") in the generated hyperlink.
                </li>
                <li>The JavaScript code generated to implement the
                    <code>focus</code>
                    attribute of the
                    <code>&lt;html:form&gt;</code>
                    tag now works even
                    when you use nested or indexed property expressions.
                    Previously,
                    this would generate an invalid JavaScript reference to the
                    field.
                </li>
                <li>The
                    <code>&lt;html:checkbox&gt;</code>
                    tag now conforms to its
                    documentation, and sends the specified
                    <code>value</code>
                    to the
                    server if this checkbox is checked at submit time. In
                    addition, a
                    default value of
                    <code>on</code>
                    is sent if no value attribute is
                    specified.
                </li>
                <li>The hyperlinks created by the
                    <code>&lt;html:link&gt;</code>
                    and
                    <code>&lt;html:redirect&gt;</code>
                    tags now properly omit the port
                    number if it is the default port for the current request
                    scheme (80
                    for http, or 443 for https). Among other things, this
                    corrects
                    session management behavior on the standard port numbers.
                </li>
                <li>The
                    <code>focus</code>
                    attribute of the
                    <code>&lt;html:form&gt;</code>
                    tag now works when the corresponding input field is a
                    radio button,
                    or is otherwise indexed.
                </li>
                <li>The
                    <code>disabled</code>
                    and
                    <code>readonly</code>
                    attributes have
                    been added to all HTML-rendering tags where they are
                    relevant.
                </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>Hyperlink processing in the
                    <code>&lt;logic:forward&gt;</code>
                    tag is now identical to that performed by the Struts
                    Controller
                    Servlet when it processes an
                    <code>ActionForward</code>
                    that is
                    returned by an
                    <code>Action</code>
                    .
                </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>The Java types of collections (and arrays) over which the
                    <code>&lt;logic:iterate&gt;</code>
                    tag can run are now documented.
                </li>
                <li>The
                    <code>&lt;bean:define&gt;</code>
                    documentation now mentions the
                    JSP 1.1 Specification restriction on using more than one
                    <code>id</code>
                    attribute with the same value in the same page.
                </li>
            </ul>

            <p>The following changes and bug fixes to the Struts Example
                Application
                have occurred:</p>
            <ul>
                <li>The Java source code of these applications is now included
                    in the
                    corresponding WAR files, in subdirectory
                    <code>WEB-INF/src</code>
                    .
                </li>
                <li>Excessive filter() calls in
                    <code>LinkSubscriptionTag</code>
                    have been eliminated.
                </li>
                <li>Calls to the deprecated
                    <code>BeanUtils.filter()</code>
                    have been
                    replaced by calls to
                    <code>ResponseUtils.filter()</code>
                    .
                </li>
                <li>Removed any attempt to save the pseudo-database at
                    application
                    shutdown, because there is no portable mechanism to
                    accomplish
                    this task.</li>
            </ul>

            <p>The following changes and bug fixes to the Struts Template
                Example
                Application have occurred:</p>
            <ul>
                <li>Refactored the example pages to eliminate the creation of
                    redundant
                    <code>&lt;html&gt;</code>
                    ,
                    <code>&lt;head&gt;</code>
                    , and
                    <code>&lt;body&gt;</code>
                    tags.
                </li>
                <li>If
                    <code>&lt;template:get&gt;</code>
                    or
                    <code>&lt;template:insert&gt;</code>
                    throws an exception, do not
                    overwrite any "real" exception that has already been
                    saved.
                </li>
                <li>The text of the various pages in the example has been
                    updated so
                    that they are not identical.</li>
            </ul>

        </section>


    </body>

</document>
