- Pluggable framework architecture that allows request lifecycles to be customized for each action.
- Flexible validation framework that allows validation rules to be decoupled from action code.
- Hierarchical approach to internationalization that simplifies localizing applications.
- Automatic type conversion that transparently maps values from HTTP to native Java data objects, solving one of the most tedious efforts when creating web applications.
- Integrated dependency injection engine that manages component lifecycle and dependencies. (By default, the framework utilizes Spring for dependency injection.)
- Modular configuration files that use packages and namespaces to simplify managing large projects with hundreds of actions.
- Java 5 annotations that reduce configuration overhead. (Java 1.4 is the minimum platform.)