# What's New In Spring Web Flow 2.1

## Version Upgrades

### Spring Version Changes

Spring Web Flow 2.1 is built on Spring 3 that in turn requires Java 5.

### Spring Security Version Changes

Spring Web Flow 2.1 is built on Spring Security 3. Due to package changes in Spring Security this release is not backwards compatible with prior versions of Spring Security.

### Tiles Version Changes

Spring Web Flow 2.1 is built on Spring 3, which in turn requires Tiles 2.1.2 (or higher). Due to incompatible API changes in Tiles 2.1.2 this release is not backwards compatible with prior versions of Tiles.

### JSF Version Changes

Spring Web Flow 2.1 provides initial support for JSF 2 and aims to maintains backwards compatibility with JSF 1.2 while JSF 1.1 will no longer be officially targeted.

Initial support for JSF 2 means the ability use Mojarra or Apache MyFaces JSF 2 dependencies along with the Faceletes implementation officially bundled with JSF 2 jars. That means any separate Facelets libraries such as `com.sun.facelets` (the one containing `com.sun.facelets.FaceletViewHandler`) can be removed from the project dependencies. Please see the `booking-faces` Web Flow sample, which is configured to run with Mojarra 2.0. The `ivy.xml` included in the sample has configuration and notes on how to recompile for Mojarra 1.2 or with Apache MyFaces. The recommended version of Apache MyFaces 2 to use is 2.0.1.SNAPSHOT due to MYFACES-2686.

Partial state saving is a new feature that is enabled by default in JSF 2. This feature is not yet supported in Spring Web Flow and must be disabled through a servlet configuration parameter as is shown the `booking-faces` sample.

In version 2.1 Spring Web Flow doesn't explicitly target any JSF 2 features. Some features such as composite components, JSR 303 validation, and others may work while others such as the new Ajax support probably won't. The goal of this release is to be an intermediate step with more meaningful JSF 2 support to follow in subsequent releases.

What this does is it allows applications to begin the migration to JSF 2 (if they wish to do so) and the Web Flow to team to work and test effectively in a JSF 2 environment.

### Portlet Version Changes

Spring Web Flow 2.1 is built on Spring 3, which in turn requires Portlet API 2.0. There are no significant changes in Web Flow relating to this upgrade. The programming model for Spring Portlet MVC applications is mostly backwards compatible with applications running on Portlet API 1.0. The implications of this change are mostly with regards to runtime version requirements.

The `booking-portlet-mvc` sample has been tested with Apache Pluto 2.0.1 with a nightly build update due to PLUTO-591. Apache Pluto 2.0.2 or higher will give you that fix.

The `booking-portlet-faces` sample unfortunately has not been tested successfully with the combination of JSF 1.2, Portlet 2.0, and Facelets. See the readme in the sample for more information.

## Spring 3 Changes

### Spring EL

The Spring Expression language is now the default implementation used in Spring Web Flow. Existing applications can still choose to plug in the Unified EL or OGNL if they wish to do so. Spring EL however is the recommended approach. It offers advantages such as close integration with the Spring 3 Type Conversion and Formatting system and is also used in other Spring projects. For more information see .

### Spring 3 Type Conversion

Spring Web Flow now uses the new Spring 3 type conversion and formatting mechanism that includes use of formatting annotations such as `NumberFormat` and `DateTimeFormat`. The Spring 3 type conversion was influenced by the existing mechanism used in Spring Web Flow. Hence Web Flow users should find this to be a logical step forward.

Existing applications can continue to use the custom converters they currently have. With the new approach however, they can now use a single mechanism across Spring MVC controllers and flow definitions. For more information see .

## Tiles Updates

Spring Web Flow 2.1 provides support for Tiles 2.1.2. It has contains important features that can help reduce Tiles related configuration. This includes wildcard support when listing Tiles definition files or when defining Tiles definitions, anonymous and cascaded nested definitions among others. See What's new in Tiles 2.1 for more details.