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.)
Reusable user interface tags that allow for easy component-oriented development using themes and templates. Bundled tags ranges from simple text fields to advanced tags like date pickers and tree views.
JSTL-compatible expression language (OGNL) that exposes properties on multiple objects as if they were a single JavaBean.