Struts Framework
Welcome
Home
Kickstart FAQ
User Guide
Resources
Who We Are
Downloads
Binaries
Source Code
Getting Started
Installation
Release Notes
Javadoc
Mailing Lists
Bug Database
Developer Guides
Bean Tags
HTML Tags
Logic Tags
Template Tags
Digester
Utilities
TagLib Documentation
Bean Tags
HTML Tags
Logic Tags
Template Tags
Current Development
Installation (nightly)
Release Notes (nightly)
Javadoc (nightly)
Workflow Proposal
TODO List
Introduction

Application frameworks, like the applications we build with them, never seem to be completed. The following major areas of improvement are being considered for implementation in version 1.1 of Struts, with work to begin as soon as version 1.0 is released.

An external development that is likely to affect the development of Struts 1.1 will be the emerging Standard Tag Library, being produced under the Java Community Process (see JSR #52 for more information), at http://java.sun.com/jcp. The existing Struts tags will certainly be used as input to the standardization process, but in the case where standard tags with similar functionality are adopted, we should migrate Struts tags to maintain maximum compatibility with the new standard library.

The TODO list tasks are divided into functional areas that correspond to the major components of the Struts Framework. References in square brackets are the Java package containing the corresponding source code.

Struts Documentation

Omnibus task list for items related to the Struts Documentation, which do not have direct relationships with code bases.

DescriptionVolunteer
Struts Example Application

An example web application utilizing the Struts framework and custom tag library.

DescriptionVolunteer
Better Database Support. Use a "real" database of some sort (while still making Struts easy to install. Ted Husted
Locale Switching. Add support for switching Locales on the fly to the Struts example application. Ted Husted
MVC Framework [org.apache.struts.action]

This is the core controller servlet, with support for the developer's action and form bean classes, plus the supporting data structures.

DescriptionVolunteer
Remove Deprecations. Clean out all 1.0 deprecated classes and files, framework-wide.
ActionForms With Dynamic Properties. Create mechanisms to support ActionForm implementations where the set of properties to be included is dynamically calculated, in addition to the current support for properties that are accessed through the Java Reflection APIs and are therefore fixed.
Workflow Processing. Create a mechanism by which business logic (now encoded in Action classes) can be subdivided into individual work Tasks that are combined according to configuration information (including flow control and iteration support) in the struts-config.xml file. Support for workflow processing would be provided by a set of standard Actions, and will offer an alternative mechanism (not a replacement of Actions) to organizing your business logic. Craig Tataryn, Nic Hobbs
Standard Validations. Add the ability to configure standard validations on particular properties to be enforced by the controller servlet automatically. Where feasible, client-side JavaScript validations may also be generated based on the same configuration rules. Nic Hobbs, Dave Winterfeldt
PropertyEditor Support. Add support for JavaBeans that include a PropertyEditor class for conversion to and from the string representation used in an HTML input field. This support should operate in a manner consistent with the way that standard JSP tags do in JSP 1.2.
Event and Listener Model. Retrofit the Struts controller framework with supports for event generation (and the corresponding registration of listeners) for all interesting events created by the framework. The list of interesting events will undoubtedly be influenced by changes related to other work items on this list (such as workflow processing and standard validations), so work on this should be coordinated with those changes. [STRUTS-DEV, Robert Leland, 10/10/2000] [STRUTS-DEV, David Geary, 12/20/2000] [STRUTS-USER, Ted Husted, 12/23/2000]
EJB Design Patterns. Begin adding design patterns and support for easy integration with Enterprise JavaBeans (EJBs) for encapsulation of business logic and application data. Nic Hobbs
HTML No-Cache Support. Improve the current Struts support for generating no-cache headers to provide finer-grained, configurable control on a per-page basis. [STRUTS-DEV, Hou Yunfeng, 10/07/2000] [STRUTS-DEV, Matthias Kerkhoff, 11/18/2000]
Role-Based Action Execution. Add the ability to require the current user to be in a particular security role before they can execute a particular action. [STRUTS-DEV, James W., 01/23/2001] Nic Hobbs
XML Digester [org.apache.struts.digester]

The Digester package supports scripted firing of "rules" based on matching a particular pattern of nested XML tags. Among the predefined rules that can be utilized are rules to create new objects, set bean properties from the contents of attributes, or call arbitrary methods with arguments based on the XML content being parsed. A common use for this technology (illustrated in the Struts ActionServlet), is parsing configuration files and building corresponding object trees.

DescriptionVolunteer
Developer Documentation. Create more detailed documentation of how the Digester package can be utilized by application developers.
Refactor Dependencies. Refactor import dependencies, here and within the utilities package, with the goal of being able to use the Digester package in standalone applications without having to import the servlet API classes. [STRUTS-USER, Martin Cooper, 01/02/2001]
Bean Tag Library [org.apache.struts.taglib.bean]

This tag library contains basic tags useful in manipulating JavaBeans and their properties. It includes support for getting and setting bean properties using simple, nested, and subscripted accessor expressions.

DescriptionVolunteer
XPath Support. Update all of the relevant tags to include property accessor support using the syntax specified by the XPath standard (www.w3c.org). Dave Bettin
XML DOM Support. Update all of the relevant tags to get and set attributes from a Java object that implements the XML Document Object Model, as well as from the current tree of JavaBean objects. How the underlying data object is stored should be transparent to page writers using these tags. Dave Bettin
JDBC RowSet Support. Update all of the relevant tags to get and set attributes from a JDBC RowSet (or ResultSet) object, as well as from XML DOM objects and the current tree of JavaBean objects. How the underlying data object is stored should be transparent to page writers using these tags. Dave Bettin
Formatting Support. Add the ability to use formatting patterns (suitably localized) for presenting numbers, dates, times, timestamps, and so on via formatted patterns. [STRUTS-DEV, Oleg Alexeev, 10/27/2000] [STRUTS-USER, Ned Seagoon, 12/11/2000] [STRUTS-DEV, Ned Seagoon, 12/13/2000] [STRUTS-USER, Ned Seagoon, 01/04/2001] Dave Bettin
HTML Tag Library [org.apache.struts.taglib.html]

This tag library contains tags useful in preparing web applications that use HTML forms as their primary mechanism for user data entry, as well as support for internationalized and localized applications.

DescriptionVolunteer
Client Side Validation. Add the ability to automatically generate optional JavaScript code to perform client-side validations for things like required fields, numeric fields, dates/times/timestamps, and so on. The required validation should mesh with validation enhancements provided in the controller servlet itself. [STRUTS-DEV, David Winterfeldt, 07/27/2000] Ted Husted, Nic Hobbs, Dave Winterfeldt, Spencer Smith
Radio Button Groups. Add a new tag that supports generation of groups of radio buttons. [STRUTS-DEV, Wellington Silva, 08/28/2000]
Improve Options Tag. Improve the mechanism by which you define values and corresponding labels for <html:options>. [STRUTS-DEV, David Winterfeldt, 07/27/2000] [STRUTS-DEV, David Winterfeldt, 08/02/2000] [STRUTS-DEV, Andy Boyko, 11/15/2000] [STRUTS-DEV, Andy Boyko, 12/07/2000]
Improve Error Reporting. Improve the ability of the <html:errors> tag to present error messages, especially property-specific messages. [STRUTS-DEV, Oleg Alexeev, 10/23/2000] [STRUTS-DEV, Oleg Alexeev, 11/15/2000] [STRUTS-DEV, Oleg Alexeev, 01/01/2001]
Additional Attributes. Support additional HTML 4.0.1 attributes (such as "disabled", "readonly", "wrap" on textarea) where appropriate. [STRUTS-USER, , 08/23/2000]
Improved Iteration Support. Improve the ability to use the <logic:iterate> tag over a collection, and generate a set of input fields for each member of the collection (perhaps auto-generating a subscript?). A significant use case is master-detail relationships (say, a customer and their current orders) where you allow editing of any and all fields. [STRUTS-USER, Lars, 12/06/2000] [STRUTS-USER, Chandan Kulkarni, 12/26/2000]
Multi-Page Form Support. Create design patterns and improved internal support for forms that span multiple pages. Nic Hobbs
JDBC Tag Library [org.apache.struts.taglib.jdbc]

This tag library will provide mechanisms to acquire information from a database that is useful in the presentation logic of an application (such as populating the values shown in an HTML select element). They will interact with a data source object created and initialized by the controller servlet.

DescriptionVolunteer
Create Tag Library. Create the initial tag library and documentation.
Logic Tag Library [org.apache.struts.taglib.logic]

This tag library provides mechanisms to conditionally process nested body content based on a variety of logical conditions.

DescriptionVolunteer
'Else' and 'Else If' Capability. Add "else" and "else if" constructs to the existing conditional tags, in some reasonable format. [STRUTS-DEV, Eduardo Pelegri-Llopart, 06/14/2000] [STRUTS-DEV, Frank Nestel, 06/26/2000]
Other Conditional Structures. Add conditional tags that emulate the "case" or "switch" capability of many programming languages.
Iterating Parallel Collections. Enhance <logic:iterate>, or provide a new tag, to iterate over multiple collections in parallel. [STRUTS-DEV, Jeff R., 08/03/2000]
Enhance Role Checking. Enhance <logic:present> to accept a comma delimited list of roles in the role attribute, and process the nested body content if any of the listed roles where owned by the current user. A corresponding change to <logic:notPresent> would process the nested body content only if none of the listed roles were owned by the present user. [STRUTS-USER, David Winterfeldt, 01/03/2001]
WML Tag Library [org.apache.struts.taglib.wml]

This tag library will contain tags useful in preparing web applications similar to those supported by the HTML tag library, but render output that is well-formed XML in accordance with WML specifications.

DescriptionVolunteer
XFORMS Tag Library [org.apache.struts.taglib.xforms]

This potential new tag library provides access to facilities in the emerging XForms standards.

DescriptionVolunteer
Generalized Form Handling. Consider how to support more generalized definitions of forms and their fields, perhaps based on emerging XForms standards.
XHTML Tag Library [org.apache.struts.taglib.xhtml]

This tag library will contain tags useful in preparing web applications similar to those supported by the HTML tag library, but render output that is well-formed XML in accordance with the XHTML 1.0 specification.

DescriptionVolunteer
Tools Support [org.apache.struts.tools]

This package contains code generators and other tools that facilitate the creation of Struts-based applications. Further subdivision into specialized packages should be performed as appropriate.

DescriptionVolunteer
XML --> ActionForm Code Generator. Create a tool that takes an XML-based description of the properties of the form bean, and automatically generates the corresponding Java class. [STRUTS-DEV, Mark Wutka, 06/01/2000 and 06/16/2000] Martin Cooper
Utility Classes [org.apache.struts.util]

This package contains a variety of utility classes useful within Struts as well as in stand-alone applications.

DescriptionVolunteer
XmlMessageResources. Implementation of MessageResources and MessageResourcesFactory that loads message keys and strings from one or more XML resources or files. [STRUTS-DEV, Scott Sayles, 01/07/2000]
GenericDataSource Improvements. Improve the connection pool implementation by including checking for dead connections before a connection is returned. (The means used for checking needs to be configurable somehow). [STRUTS-USER, David Winterfeldt, 01/04/2001]
Enhanced Collections Support. Improve support in BeanUtils, ConvertUtils, and PropertyUtils for property values that implement Collection, List, or Set, treating them in a manner similar to the way that indexed or array-valued properties are handled. [Bugzilla #640]
Unit Test Suites

Unit test components compatible with the JUnit and Cactus testing frameworks, to test and validate internal APIs of the Struts framework. Volunteers will typically agree to develop tests for an entire package within the Java source code of Struts.

DescriptionVolunteer
Action. Unit tests for the org.apache.struts.action package. Rob Leland
Actions. Unit tests for the org.apache.struts.actions package.
Digester. Unit tests for the org.apache.struts.digester package.
Taglib.Bean. Unit tests for the org.apache.struts.taglib.bean package.
Taglib.Html. Unit tests for the org.apache.struts.taglib.html package.
Taglib.Logic. Unit tests for the org.apache.struts.taglib.logic package.
Taglib.Template. Unit tests for the org.apache.struts.taglib.template package.
Upload. Unit tests for the org.apache.struts.taglib.upload package.
Util. Unit tests for the org.apache.struts.util package.
Additional Possibilities

This section is a catch-all for additional areas of functionality to be investigated for inclusion into Struts.

DescriptionVolunteer
Coarse Grain Components. [STRUTS-DEV, Cedric Dumoulin, 10/03/2000]
Multidimensional Properties. [STRUTS-DEV, Eric, 11/07/2000]
Portal Components. [STRUTS-DEV, Phil Grimm, 11/22/2000] Ted Husted
Storefront Example App. [STRUTS-DEV, David D'Orto, 12/11/2000]
Contributors Area

A portion of the Struts web site, and file system, where individually contributed add-ons for Struts can be hosted and downloaded.

DescriptionVolunteer
Proposal. Detailed proposal with implementation plan. [STRUTS-USER, Ned Seagoon, 12/22/2000] Ted Husted

Copyright (c) 2000-2002, Apache Software Foundation