Spring Web Flow complements the strengths of JSF, its component model, and provides more sophisticated state management and navigation. In addition you have the ability to use Spring MVC @Controller or flow definitions as controllers in the web layer.
JSF applications using Spring Web Flow applications gain benefits in the following areas:
Managed bean facility
Scope management
Event handling
Navigation
Modularization and packaging of views
Cleaner URLs
Model-level validation
Progressivy-enhancement sytle client-side validation
Progressive-enhancement style Ajax requests with partial page updates
Using these features significantly reduce the amount of configuration required in faces-config.xml. They provide a cleaner separation between the view and controller layers along with better modularization of application functionals. These features are detailed in the sections to follow. The majority of these features build on the flow definition language of Spring Web Flow. Therefore it is assumed that you have an understanding of the foundations presented in Chapter 3, Defining Flows.