martinc     2003/06/28 23:46:07

  Added:       doc/userGuide release-notes-1.1.xml
  Log:
  Release notes for the 1.1 release.
  
  Revision  Changes    Path
  1.1                  jakarta-struts/doc/userGuide/release-notes-1.1.xml
  
  Index: release-notes-1.1.xml
  ===================================================================
  <?xml version="1.0"?>
  <document url="release-notes-1.1.html">
  
    <properties>
      <author>Craig R. McClanahan</author>
      <author>Robert Leland</author>
      <author>Ted Husted</author>
      <author>Martin Cooper</author>
      <title>Struts Release Notes (Version 1.1)</title>
    </properties>
  
    <body>
  
    <chapter name="6.1 Release Notes" href="release_notes">
    <section name="Release Notes" href="beta">
  
      <p>This section contains the release notes for the
      <strong>Version 1.1</strong> build of the Struts Framework, for changes that
      have taken place since
      <a href="release-notes-1.1-rc2.html">Version 1.1 Release Candidate 2</a>
      was issued. For a complete list of changes since the last
      production release, see the <a href="#Introduction">Introduction</a> </p>
  
    </section>
  
  <section name="Release Candidate/Beta Fixes" href="beta.Changes">
  
      <p>
          In RC2, the <b>Commons-DBCP and Commons-Pool dependencies have been 
removed</b>.
          These are replaced with a dependency on the Struts-Legacy package,
          containing the GenericDataSource and GenericConnection classes from Struts 
1.0.2.
          These are distributed for J2SE 1.3 but may be recompiled for J2SE 1.4.
          Other DataSource implementations may be plugged in (recommended).
      </p>
  
      <p>
          Other changes since RC1 have been routine fixes and refactorings.
      </p>
  
      <p>
          <b>OTHER CHANGES:</b>
      </p>
  
      <p>
          <b>Action package:</b>
          Deprecated processActionForward() because ActionForward is a subclass of 
ForwardConfig so there's no reason we can't use processForwardConfig() instead.
          Updated to use processForwardConfig instead of deprecated 
processActionForward.
          Deprecated the rest of the Action constants in favor of Globals.
          Refactored some of initModuleConfig into a separate method and cleaned up.
          Improved exception handling in ActionServlet and RequestProcessor; 
generally, we limited the scope of try/catch blocks and caught specific exceptions 
rather than Throwable.
      </p>
  
      <p>
          <b>Documentation:</b>
          Document the &lt;html:html&gt; tag's locale attribute behaviour of creating 
a session if needed.
          Added note to validator section regarding the converNull servlet parameter 
and required validations of java.lang.Integer fields.
          Moved sites and consultants page to Struts Wiki.
          Other minor tweaks.
      </p>
  
      <p>
          <b>EL package:</b>
          Fixed mapping of "onkeypress" attribute.
          Separated "expr" attribute into "expr" and "exprValue", being the original 
attribute value and the evaluated value.
          Fixed probably long-standing bug in notMatch tag that made it behave 
identically to the "match" tag (instead of the reverse).
  
      </p>
  
      <p>
          <b>Example applicattions:</b>
          Added Multi-config files for the example app.
      </p>
  
  
      <p>
          <b>Legacy package:</b>
          Added package under contrib to host old GenericDataSource and 
GenericConnection classes.
  
      </p>
      <p>
          <b>Taglibs packages:</b>
          Fixed several import statements.
          Refactored converting a scope name into its integer constant into a new 
method RequestUtils.getScope(String), and changed the DefineTag, EmptyTag, and 
TagUtils classes to use the new method.
      </p>
  
      <p>
          <i>faces taglib.</i> Added early release to contrib area.
      </p>
  
      <p>
         <i>html taglib.</i>
         Reset the 'processed' flag at the beginning of each usage of the tag. Use a 
local copy of the 'name' attribute to avoid modifying the attribute value itself.
         Fixed references to static members.
         For FrameTag and HiddenTag, conform TLD with implementations.
         In ErrorsTag, render a platform-independent line ending instead of hard coded 
"\r\n".
         In JavaScriptValidatorTag, make the line-end generation platform independent 
so that Cactus tests work properly.
         In FormTag, refactored code into smaller reusable methods.
         In RewriteTag, encode the ampersand character in XHTML mode only, otherwise 
write the ampersand as is so the URL will work in JavaScript scripts.
         Refactored form bean initialization out of doStartTag() into its own method.
         Refactored doStartTag() 'if' statement to avoid having long nested 'if' logic.
         In ErrorTag, fixed formatting and deprecated unused defaultLocale variable.
         Refactored doStartTag() and doEndTag() into smaller methods.
         Moved xhtml check to RequestUtils instead of duplicating the logic in many 
different classes.
         Added lookupProperty() method to BaseHandlerTag because both RadioTag and 
TextareaTag used the same code.
         Refactored TextareaTag into smaller methods.
         In JavaScriptValidatorTag, replaced duplicated code with call to 
RequestUtils.retrieveUserLocale() and simplified an 'if' statement.
      </p>
  
      <p>
          <i>logic taglib.</i>
          Set 'iterator' to null in doEndTag() so that we release the iterator 
reference as early as possible. We cannot do the same for 'collection' since it is a 
tag attribute, and needs to remain unchanged to comply with the JSP spec.
          Don't create empty cookies array if null, just don't run the loop at all.
          In ForwardTag, remove unnecessary test for null.
  
      </p>
  
     <p>
         <i>nested tablibs.</i>
         Improved support for Tomcat 4.1.18.
         Replace EVAL_BODY_AGAIN with EVAL_BODY_TAG so that the code compiles against 
the JSP 1.1 API.
         Changed the &lt;nested:define&gt; tag's tei class to reference a new custom 
tei class for the nested tags.
     </p>
  
      <p>
          <i>tiles taglib.</i>
          Fixed references to static members.
          Deprecated outdated Tiles TextTag.
          For InsertTag, only include page if it's non-null.
          For InserTag, remove page check before including for more investigation.
      </p>
  
      <p>
          <b>Test packages:</b>
          Added several new tests for the bean, html, and logic taglibs to the suite 
setup at the tail-end of RC1.
          Note: We cannot resolve request.getServerPort() in the Cactus 1.4.x 
environment, so for now, our tests will only run on Cactus 1.3
      </p>
  
      <p>
          <b>Tiles package:</b>
          Deprecated TilesUtil.applicationClass() in favor of 
RequestUtils.applicationClass()
      </p>
  
      <p>
          <b>Util package:</b>
          retrieveUserLocale now uses the request.getLocale() method for finding the 
user's preferred locale.
          If user has not specified this with Accept-Language header, the server 
default locale is used.
          Change encodeURL() to not use reflection on every call.
          In RequestUtils, simplified separator logic in computeURL().
      </p>
  
      <p>
          <b>Validator package:</b>
          Deprecate logging methods and indicate that commons-logging should be used.
          Logic simplification and minor formatting fixes to Resources class.
  
      </p>
  
      <p>
          <b>build files:</b>
      </p>
  
      <ul>
          <li>
              (build.properties.sample) Add an entry for http-unit.
          </li>
          <li>
              Remove dependency on Commons Resources for Struts 1.1 release. (This 
migration will happen later).
          </li>
          <li>
              Make it possible to build Struts against the Servlet 2.4 and JSP 2.0 
APIs, where the JSP classes have been pulled out into their own JAR file (jsp.jar). On 
an earlier platform, you can leave the "jsp.jar" property unset and thing will 
continue to operate as they have before.
          </li>
  
      </ul>
  
  
      <p>
          <b>Bugzilla Problem Report fixes:</b>
      </p>
  
      <ul>
          <li>
              Fixed #17312 - retrieveUserLocale throws exception without sessions.
          </li>
          <li>
             Fixed #17254 - If body text is empty and there's no resource key to 
lookup, display nothing in the option.
          </li>
          <li>
             Fixed #17371- The tag now uses RequestUtils.retrieveUserLocale for 
looking up the appropriate locale. Using that method protects us from needlessly 
creating a session.
          </li>
          <li>
             Fixed #17375 - Problem in ELErrorsTag because the "name" attribute of 
ErrorsTag has a non-null default value.
          </li>
          <li>
            Fixed #17622 - validator-rules.xml issues.
          </li>
          <li>
            Fixed #17299 - Set page variable from dyna map before validating.
          </li>
          <li>
            Fixed #17838 - Help debug specific user errors by showing quotes around 
the key that is in error (missing or mispelled).
          </li>
          <li>
            Fixed #17833 - validateShort and isAllDigits for negative numbers.
          </li>
          <li>
            Fixed #17328 - Synchronized loadLocale.
          </li>
          <li>
            Fixed #18018 - Changed field-* variables to camel case and no "-".
          </li>
          <li>
            Fixed #16548 - validateMinLength and validateMaxLength are now independent 
of the required check.
          </li>
          <li>
           Fixed #17389 - Splice in the I18nFactorySet.calculatePostixes from the 
attachment, rebuild, and ran the unit tests successfully.
          </li>
          <li>
           Fixed #17273 - Removed extra return statement (RequestUtils).
          </li>
          <li>
           Fixed #17592 - Tag should support a "naked" collection that is not a 
property of a bean.
          </li>
          <li>
           Fixed #17592 - Made "property" attribute of "optionsCollection" tag be not 
required, to match same change made for #17592 in base tag.
          </li>
          <li>
           Fixed #17562 - Change the InsertTag to let it use PageContext.include() 
instead of RequestDispatcher.include(). We are no back to the same mechanism used in 
the 1.1b3 release.
          </li>
          <li>
           Fixed #18186 - Use temp variable instead of overwriting tag attribute 
variable.
          </li>
          <li>
           Fixed #18394 - Changed error to info log if DefinitionsFactory is not 
supplied.
          </li>
          <li>
           Fixed #18538 - Changed shortname to "tiles".
          </li>
          <li>
           Fixed #18591 - Braces placement in message().
          </li>
          <li>
           Fixed #18018 - Don't output requiredif field* javascript variables because 
they're not used and break other validations.
          </li>
          <li>
           Fixed #18794 -Check ServletContext for ModuleConfig instead of request.
          </li>
          <li>
           Fixed #18864 - Changed Class-Path to conform to jar spec.  The previous 
patch fixing a bug in  WebLogic caused warnings in Resin.
          </li>
          <li>
           Fixed #18991 - Allow messages object passed to add(ActionMessages) to be 
null.
          </li>
          <li>
           Fixed #19040 -  Added null checks back to ActionServlet.
          </li>
          <li>
           Fixed #19157 - Implement Serializable in NestedReference.
          </li>
          <li>
           Fixed #18869 - Added display-name to web.xml files.
          </li>
          <li>
          Fixed #19223 - Synchronized token methods for PR.  Post 1.1 these methods 
should be moved to some kind of TokenProcessor class for reusability by other 
components such as the RequestProcessor (#16743).
          </li>
          <li>
           Fixed #19236 -  Added "action" attribute to "html-el:frame" tag.
          </li>
          <li>
           Fixed #11932 - Factored common code out of message() and present() into a 
new private method retrieveMessageResources.
          </li>
          <li>
           Fixed #11922 - Moved Action's token methods to this new class to fix 
synchronization issues and allow Action to be more focused.
          </li>
          <li>
           Fixed #19594 - Fixed minlength javascript for PR.  Also, removed password 
field checking from validateMask.
          </li>
          <li>
          Fixed #19773 - EmptyTag and added test to exercise-taglib webapp.
          </li>
          <li>
          Fixed #19835 - Add check against -1 to maxSize.
          </li>
          <li>
          Fixed #20034 - Call releaseInternal() in release() so if error occurs 
between begin/end of tag next user/request will not be working with old parameters.
          </li>
          <li>
          Fixed #20455 - validateRequiredIf() fails on Strings of whitespace.
          </li>
          <li>
          Fixed #20678 - Struts data-souce pingQuery parameter
          </li>
          <li>
          Fixed #20750 - RequestUtils.retrieveMessageResources (really an RC2 bug)
          </li>
          <li>
          Fixed #20835 - <html:rewrite> tag using page attribute bug
          </li>
          <li>
          Fixed #20877 - MessagesTag has incorrect assignment in release()
          </li>
          <li>
          Fixed #20949 - Tag <html:select> doesn't work well on RC2
          </li>
          <li>
          Fixed #21051 - javascript required validator accepts fields containing only 
whitespace
          </li>
          <li>
          Fixed #21119 - typo in struts-doc-config.xml
          </li>
      </ul>
  
  
  </section>
  
    <section name="Introduction" href="Introduction">
  
      <p>The remainder of this document contains the release notes for
      <strong>1.1 Release Candidate 2</strong> build of the Struts Framework,
      and covers changes that have taken place since
      <a href="release-notes-1.0.2.html">Version 1.0.2</a>
      was released.  The following sections cover
      <a href="#New">New Features</a> and <a href="#Changes">Changes</a>
      to Struts.</p>
  
    </section>
  
  
    <section name="What's Included?" href="Included">
  
      <p>The binary distribution of this release includes the following
      files relevant to Struts:</p>
      <ul>
      <li><code>INSTALL</code> - Brief installation instructions.  See
          the <code>Struts Documentation Application</code>, or online at
          <a 
href="http://jakarta.apache.org/struts/";>http://jakarta.apache.org/struts/</a>,
          for more information.</li>
      <li><code>LICENSE</code> - The Apache Software Foundation license that
          defines the terms under which you can use Struts (and other software
          licensed by Apache).</li>
      <li><code>README</code> - A brief introduction to Struts.</li>
      <li><code>lib/</code> - Directory containing files you will need in
          your own applications.  The individual files of interest are:
          <ul>
          <li><code>commons-*.jar</code> - Release packages from the
              <a href="http://jakarta.apache.org/commons/";>Jakarta Commons
              Project</a> that Struts relies on.  You are welcome to use these
              classes in your own applications.  These JAR files should be
              copied into the <code>/WEB-INF/lib</code> directory of
              your web application.</li> See below for the version of each
              Commons library that is included.
          <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>
  
      <p>The following Jakarta Commons libraries are included with this release
      of Struts:</p>
      <ul>
      <li>Commons BeanUtils 1.6.1</li>
      <li>Commons Collections 2.1</li>
      <li>Commons Digester 1.5</li>
      <li>Commons FileUpload 1.0 RC1</li>
      <li>Commons Lang 1.0.1</li>
      <li>Commons Logging 1.0.3</li>
      <li>Commons Validator 1.0.2</li>
      </ul>
  
    </section>
  
    <section name="What's New?" href="New">
  
      <p>Following are highlights of the new features. In the next section, we
      provide links to the JavaDocs for the affected classes.</p>
  
      <p><strong>New Configuration DTD</strong></p>
      <p> The Struts Configuration 1.0 DTD has been deprecated in favor of the
      <code><a 
href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";>struts-config_1_1.dtd</a></code>.
      In the Struts 1.1 release, existing Struts configuration files can be
      loaded using either DTD version.
      </p>
  
      <p><strong>New Dependencies on Commons packages</strong></p>
      <p>Several components of Struts 1.0 have been found to be useful in
      general Java development (and not just useful for building Struts-based
      web applications), and have been migrated into the
      <a href="http://jakarta.apache.org/commons/";>Jakarta Commons Project</a>.
      As a result, this release 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 the classes.  Any
      of your 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>FileUpload Package</strong>
      [<a 
href="http://jakarta.apache.org/commons/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>Validator Package</strong>
      [<a 
href="http://jakarta.apache.org/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>
  
      <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>
  
      <p>The source for these components is available in the Struts source
      distribution. Binary distributions may also be made available in 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. This is now
          the default file upload implementation for Struts.</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; and 
&lt;html:optionsCollection&gt; tags, 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.</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.2 JavaDoc: Added archival copy to web site for future reference.</li>
      <li>The UserGuide "Building" pages: General revisions to reflect new features 
and current practices.</li>
      <li>Installation: Updated instructions for SilverStream and Resin. Add 
installation notes for Jetty. Added RexIP to list of nominal containers.</li>
      <li>JavaDocs: New <code>@since Struts 1.1</code> tag to indicate new packages, 
classes, and members added after the Struts 1.0.x version</li>
      </ul>
  
    </section>
  
    <section name="Operational Changes and Bug Fixes" href="Changes">
  
      <p><strong>Struts Configuration Changes</strong></p>
      <p>The following changes and bug fixes have occurred in the configuration
      files related to Struts:</p>
      <ul>
      <li>Deprecated (Struts 0.5) configuration file format: Remove support.</li>
      <li>Deprecated (Struts 0.5) methods: Remove from codebase.</li>
      </ul>
      <p><strong>Added Config Package</strong></p>
      <ul>
      <li>ControllerConfig: Added inputForward property to indicate that 
ActionMapping.input is a forward rather than a URI.</li>
      <li>ControllerConfig: Added forwardPattern and inputPattern to help manage page 
directories in application modules.</li>
      <li>Added package to provide more flexibility in configuring the controller and 
to provide support for modular applications</li>
      </ul>
      <p><strong>Action Package Changes</strong></p>
      <p>The following changes and bug fixes have occurred in the basic
      controller framework (package <code>org.apache.struts.action</code>):</p>
      <ul>
      <li>All constants in the Action class: Deprecated in favor of equivalents in new 
Globals class.</li>
      <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 to 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>
      <li>processActionForward(): Deprecated in favor of processForwardConfig</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>) [part of the Upload 
webapp]:</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>
      <li>Errortag: defaultLocale method is deprecated as it is unused.</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&gt; using "action" attribute. </li>
      <li>Added test cases for &lt;html:select&gt; using &lt;html:options&gt; and
          &lt;html:optionsCollection&gt; based on a collection saved in the page 
context.</li>
      </ul>
  
    </section>
  
    <section name="What's different?" href="diff">
  
      <p>This section provides links to the Struts JavaDoc for any classes that have
      been added or deprecated since the Struts 1.0 release.
      </p>
  
      <p><strong>Previously deprecated classes and packages removed in Struts 
1.1</strong></p>
      <ul>
      <li>Removed:
        <code>org.apache.struts.utils.BeanUtils</code>,
        <code>org.apache.struts.utils.ConvertUtils</code>, and
        <code>org.apache.struts.utils.PropertyUtils</code> - replaced by
        <a href 
="http://jakarta.apache.org/commons/beanutils.html";><code>org.apache.commons.beanutils</code></a>
      </li>
      <li>Removed:
       <code>org.apache.struts.util.ArrayStack</code>,
       <code>org.apache.struts.util.FastArrayList</code>,
       <code>org.apache.struts.util.FastHashMap</code>,
       <code>org.apache.struts.util.FastTreeMap</code> - replaced by
       <a href 
="http://jakarta.apache.org/commons/collections.html";><code>org.apache.commons.collections</code></a>
      </li>
      <li>Removed: <code>org.apache.struts.digester.*</code> - replaced by
      <a href 
="http://jakarta.apache.org/commons/digester.html";><code>org.apache.commons.digester</code></a>
      </li>
      <li>Removed: The <code>struts-config.dtd</code> - Replaced by <a 
href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";><code>struts-config_1_1.dtd</code></a>.</li>
      <li>Removed: The omnibus "struts" taglib and its associated TLD - replaced by 
separate bean, logic, and html taglibs.</li>
      <li>Removed: The "form" taglib and its associated TLD - replaced by (renamed as) 
the html taglib.</li>
      </ul>
  
      <p><strong>Packages added in Struts 1.1</strong></p>
  
      <ul>
      <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/config/package-summary.html";>config</a></li>
      <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/package-summary.html";>taglib.nested</a></li>
      <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/bean/package-summary.html";>taglib.nested.bean</a></li>
      <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/html/package-summary.html";>taglib.nested.html</a></li>
      <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/nested/logic/package-summary.html";>taglib.nested.logic</a></li>
      <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/validator/package-summary.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>
        <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/taglib/logic/NotEmptyTag.html";>
 NotEmptyTag</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><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionException.html";>
 ActionException</a></li>
        <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionFormBeans.html";>
 ActionFormBeans</a></li>
        <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionForwards.html";>
 ActionForwards</a></li>
        <li><a 
href="http://jakarta.apache.org/struts/api/org/apache/struts/action/ActionMappings.html";>
 ActionMappings</a></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>
  
  </section>
  
  <section>
      <p align="right">
      Next: <a href="installation.html">Installation</a>
      </p>
  </section>
  
  </chapter>
      </body>
  
  </document>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to