6.1 Release Notes - Version 1.3.6

"I've had nothing yet, so I can't take more."

"You mean you can't take less. It's very easy to take more than nothing."

Introduction

This section contains release notes for changes that have taken place to Struts, since the Version 1.3.5 distribution. To keep up-to-date on all changes to the framework, subscribe to the (commits at struts.apache.org) list. To preview our plans for upcoming changes, please visit the Roadmap page.

  • Notes on upgrading are maintained in the Wiki Upgrade pages. The wiki is a community maintained resource - please feel free to add your input so that everyone can benefit from the collective experience.
For the version requirements of each library, see the Installation chapter.

Dependencies

The following dependencies have changed:

  • Validator 1.3.1 - Commons Validator has been upgraded to Version 1.3.1 - as well as a number of bugfixes, compressed versions of the JavaScript routines are provided which can be configured using the new validator-rules-compressed.xml config file.
  • Digester 1.8 - Commons Digester has been upgraded to Version 1.8 to fix issue DIGESTER-29.

Highlights of Changes

The purpose of this section is to highlight the new features since the Version 1.3.5 distribution. For more detail, see the Project Info reports for each component, which include a list of external dependencies.

You can also access to the Apache Struts source repository and change logs directly through both web browser and Subversion client interfaces.

Action ID

An action mapping may now may be given an identifier by the new actionId property which uniquely identifies the mapping within a module:

<action path="/person/view" type="..." input="...">
    <set-property property="actionId" value="viewPersonAction" />
    <forward name="success" path="person.jsp" />
</action>

Just as the TilesRequestProcessor could recognize a tile definition and resolve it to the intended JSP, so does Struts now have built-in recognition for URIs that begin with an actionId and will automatically translate forwards. Both these forwards below will be resolved internally to /person/view.do (with parameters included):

<forward name="success" path="viewPersonAction" />
<forward name="success" path="viewPersonAction?fruit=banana&color=yellow" />

You can effectively eliminate all URI management throughout the Struts configuration files and within JSP. The tag libraries are also updated to recognize the actionId:

<html:form action="savePersonAction">...</html:form>
<html:link action="viewPersonAction">...</html:link>

Note: It is good practice to name the actionId as entityAction to distinguish the identifier from, perhaps, a Tiles definition named entityPage.

Internationalization (I18N) Tag Properties

Struts tag libraries now include the HTML I18N properties. This allows sites that specialize in internationalization to specify both bi-directional text and language at the tag level:

<html:link action="viewPersonAction" dir="ltor" lang="es"/>vea a persona</html:link>

Dynamic Link Parameters

The Struts <html:link>, <html:frame>, <html:rewrite> tag libaries now allow their bodies to nest the new <html:param> tag. This is useful when it is awkward (or inappropriate) to pass in existing parameters as a Map, which is still supported and will be appened to any present <html:param> tags:

<html:link action="viewPersonAction">
    View Profile of A Struts Developer
    <html:param name="id" value="1" />
    <html:param name="name" value="Ted Husted" />
</html:link>

Property MessageResources Modes

PropertyMessageResources now has a compatibility mode option which allows it to be configured to operate in modes compatible with either JSTL or PropertyResourceBundle (as well as the backwardly compatible default mode). To use the new modes configure the the message resources in the struts-config.xml in the following way (note the use of the key attribute in <set-property>):

<message-resources parameter="....">
    <set-property key="mode" value="JSTL"/>     // JSTL mode
</message-resources>

<message-resources parameter="....">
    <set-property key="mode" value="resource"/> // PropertyResourceBundle mode
</message-resources>

Issue Tracking

Bug

  • [STR-2894] - The <form-bean> type attribute should be optional
  • [STR-2903] - MappingDispatchAction throws an error when mapping.getParameter returns null
  • [STR-2916] - Arbitrary properties don't get copied when creating ActionRedirect objects based on an existing ForwardConfig
  • [STR-2917] - ForwardConfig inheritance doesn't work when trying to inherit global forwards
  • [STR-2920] - Broken link to "MessageResources" in user guide
  • [STR-2922] - Broken Link in User Guide
  • [STR-2932] - html:option tag does not apply any filtering to escape HTML-sensitive characters
  • [STR-2935] - Tiles resource chain-config.xml missing RemovedCachedMessages and SetOriginalURI
  • [STR-2936] - Incorrect validator name floatRange used in maxlength error
  • [STR-2955] - extending action does not pick up the correct validate attribute
  • [STR-2966] - s:commandLink doesn't work with Apache Trinidad or Oracle's ADF Faces
  • [STR-2967] - html:image takes a "module-aware" path but does not allow module to be specified
  • [STR-2971] - one of validator.Resources.getActionMessage method does not respect message's "bundle" attribute
  • [STR-2972] - LazyValidatorForm cannot be saved in the session
  • [STR-2973] - multiple lifecycle (FIXME in code)
  • [STR-2977] - ELFormTagBeanInfo wrongly references ELTextTag
  • [STR-2985] - Validate language and country according to RFC2616 in HtmlTag
  • [STR-2987] - Scripting Mailreader: cannot log out

Improvement

  • [STR-2077] - Provide a PropertyResourceBundle compatibility option for PropertyMessageResources
  • [STR-2925] - Provide a JSTL compatibility option for PropertyMessageResources
  • [STR-2839] - Create aggregated Javadocs
  • [STR-2951] - Various documentation improvements
  • [STR-2952] - Maven build and infrastructure improvements
  • [STR-2958] - ClassNotFoundExceptions are swallowed by FormPropertyConfig
  • [STR-2980] - Typo in documentation: "indefinately"
  • [STR-2981] - Adjust AbstractAuthorizeAction to allow custom code to throw its own UnauthorizedActionException
  • [STR-2982] - Complete JavaDoc package summaries

New Feature

  • [STR-746] - Add <html:param> for multiple parameters
  • [STR-1559] - Need Bidirectional support for RtoL languages in html:html tag
  • [STR-2864] - Add actionId attribute to action mapping
  • [STR-2983] - Provide a new compressed version of the validator-rules.xml (requires Commons Validator 1.3.1)

Task

  • [STR-2942] - Use the DTDDoc plugin to generate HTML formatted DTD documentation
  • [STR-2944] - Update the dtds whenever the top-level site is published
  • [STR-2968] - ASF Source Header and Copyright Notice Policy
  • [STR-2978] - Struts 1.3.6 omnibus

Next: Installation