Pure POJO action beans with zero framework dependencies
Action vs controller separation. Request processing logic is
encapsulated into action controllers, simplifying action
implementations
Annotation-based dependency injection (typed request parameters,
session attributes, Spring beans, and many others)
Control over action instatiation. For example, can make an action bean
"Spring-managed"
by adding a single annotation
Various out of the box controller implementations
Forms:
Annotation-based form validators (XML and code-free)
Annotation-based data binding from form properties to domain model
Annotations for additional per-field control over type conversion
Converters and validators type-parameterized using Java 5 generics
Navigation:
Mechanisms for facilitating use of redirect after post pattern
Out the box support for various Struts navigation mechanisms
Additional navigation mechanisms pluggable using annotations
Support for rendering using Spring MVC Views and View Resolvers
Interceptors:
Pre- and post- action interceptors, with access to dependency
resolved action beans as well as full runtime context
Module-wide as well as action-specific interceptors
Extensibility:
100% extensibility in the sense that new validators, converters,
data binding mechanism, dependency injection mechanisms, etc. can be
added without changing any existing code or configuration
supports custom action bean annotations with no code or config file
change
Testability:
Actions, form validation and data conversion easily testable with
plain unit tests, with no additional test libraries required.
Compatibility:
works on the unchanged Struts 1.2.x and 1.3.x code bases. 100% backward
compatibility, no migration issues
Works with unchanged Struts tag libraries and configuration files