Struts Ti 2.0 Proposal
Struts Ti 2.0 is a simplified Model 2 framework for developing webapps which allows the developer better access to the underlying servlet/portlet environment. It serves a niche of web applications that don’t want the additional complexity of server-side components and verbose configuration, yet want the structure and controller features of a modern web framework. Struts Ti 2.0 builds on the directions of Struts 1.x, yet re-implements the framework to provide a clean slate for the next generation of Struts Ti. It aims to combine the simplicity of Ruby on Rails and NanoWeb, the refinement of WebWork 2, the tool-friendly authoring and Page Flow of Beehive, and the lessons learned from Struts 1.x.
Repository
/core /taglibs /flow /el /apps /plugins /shale /framework /clay /mailreader /tests /use-cases /tiles /bsf /build /sandbox
Key Features
POJO-based action that combines an Action and ActionForm in a similar manner to JSF backing beans and WebWork 2 Commands
Intelligent defaults utilizing naming and placement conventions to require minimal, if any, configuration per page, however it will be possible to override everything on a global and per-action basis
Configuration can be “assumed” or declared through annotations, xml or properties files, or any other pluggable mechanism
Pluggable EL for data binding defaulting to JSP 2.0 EL but allowing OGNL or even BeanUtils
Integration of a dialog or page flow capability drawing from Beehive, Spring’s web flow, and Shale’s Dialogs.
Per-Action optional interceptor chain ala WebWork 2
Built-in dependency injection support
Design Goals
No servlet dependency in core framework
Spring-based dependency injection in core to allow for pluggability
No bias to any view technology
Ability to layer Struts 1.x compatibility on top
Highly toolable
Smooth integration into a portal/portlet environment
AJAX-friendly
Implementation
Built on the backbone of commons-chain
No restriction on multiple Servlets and/or Servlet Filter implementations
Key decision points (action selection for example) use CoR chain for maximum flexiblity
Dependencies
Servlets 2.4
Java 1.4 runtime, Java 1.5 to build
JSP 2.0 if taglibs used