<?xml version="1.0"?>
<!--
    $Id$

    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.
-->
<!--
// ======================================================================== 78
-->
<document>
    <properties>
        <title>Welcome</title>
    </properties>

    <body>

        <section name="Welcome to Struts Extras">
            <a name="welcome"/>

            <p>
                Struts Extras provides several popular but non-essential 
                classes, including:
            </p>
            <table>
            <tr><th>ActionDispatcher</th><td>An Action helper class that dispatches to a public method in an Action.
            </td></tr>
            <tr>
            <th>BaseAction</th><td>BaseAction is provided as an intermediate class for shared funtionality between Action and any stock implementation provided in this package.
            </td></tr>
            <tr>
            <th>DigestingPlugIn</th><td>An implementation of PlugIn which can be configured to instantiate a graph of objects using the Commons Digester and place the root object of that graph into the Application context.
            </td></tr>
            <tr>
            <th>DispatchAction</th><td>This Action is useful for developers who prefer to combine many similar actions into a single Action class, in order to simplify their application design.
            </td></tr>
            <tr>
            <th>DownloadAction</th><td>This is an abstract base class that minimizes the amount of special coding that needs to be written to download a file. 
            </td></tr>
            <tr>
            <th>DynaValidatorActionForm</th><td>This class differs from the core DynaValidatorForm in that the key passed into the validator is the action element's 'path' attribute from the struts-config.xml which should match the form element's name attribute in the validation.xml.
            </td></tr>
            <tr>
            <th>EventActionDispatcher</th><td>An Action helper class that dispatches to to one of the public methods that are named in the parameter attribute of the corresponding ActionMapping and matches a submission parameter.
            </td></tr>
            <tr>
            <th> EventDispatchAction</th><td>An Action that dispatches to to one of the public methods that are named in the parameter attribute of the corresponding ActionMapping and matches a submission parameter
            </td></tr>
            <tr>
            <th>ForwardAction</th><td>An Action that forwards to the context-relative URI specified by the parameter property of our associated ActionMapping.
            </td></tr>
            <tr>
            <th>IncludeAction</th><td>An Action that includes the context-relative URI specified by the parameter property of our associated ActionMapping. 
            </td></tr>
            <tr>
            <th>LocaleAction</th><td>Implementation of Action that changes the user's Locale and forwards to a page, based on request level parameters that are set (language, country, and page).
            </td></tr>
            <tr>
            <th>LookupDispatchAction</th><td> An abstract Action that dispatches to the subclass mapped execute method. This is useful in cases where an HTML form has multiple submit buttons with the same name
            </td></tr>
            <tr>
            <th>MappingDispatchAction</th><td>An abstract Action that dispatches to a public method that is named by the parameter attribute of the corresponding ActionMapping.
            </td></tr>
            <tr>
            <th>ModuleConfigVerifier</th><td>Convenient implementation of PlugIn that performs as many verification tests on the information stored in the ModuleConfig  for this module as is practical.
            </td></tr>
            <tr>
            <th>SwitchAction</th><td>A standard Action that switches to a new module and then forwards control to a URI (specified in a number of possible ways) within the new module.
            </td></tr>
            <tr>
            <th>ValidatorActionForm</th><td> This class differs from the core ValidatorForm in that the key passed into the validator is the action element's 'path' attribute from the struts-config.xml which should match the form element's name attribute in the validation.xml.
            </td></tr>
            <tr>
            <th></th><td>
            </td></tr>
            </table>
            
            <p>
            Many of the "extra" classes are simple, and the easiest way to learn how to use 
            one of them, can be to review the 
            <a href="apidocs/index.html">Javadocs</a> 
            and 
            <a href="http://svn.apache.org/viewvc/struts/struts1/trunk/extras/src/main/java/org/apache/struts/">
            source code.</a>
            </p>

                        <blockquote>            
            <p>
            Note that there is not an "extras" package, per se.
            Each of the "extra" classes uses a relevant package from the core distribution, 
            such as Action, Plugins, or Validator.
            </p>
                        </blockquote>            
                        
            <p>
            In some cases, you may like to use these classes as a starting point 
            for your own custom versions. 
            In that case, feel free to adopt and adapt the source, 
            following the provisions of the 
            <a href="http://www.apache.org/licenses/">Apache License.</a> 
            </p>
            
        </section>
   </body>
</document>

