Spring Web Flow 2 Released; Introduces New Faces and JavaScript Modules

Releases | Keith Donald | May 15, 2008 | ...

Dear Spring Community,

We are pleased to announce general availability of Spring Web Flow 2. Download | Documentation

Spring Web Flow is the project in the Spring Portfolio that focuses on providing the infrastructure for building and running rich web applications. As a Spring project, Web Flow builds on the Spring Web MVC framework to provide:

  • A domain-specific-language for defining reusable controller modules called flows
  • An advanced controller engine for managing conversational state
  • First-class support for using Ajax to construct rich user interfaces
  • First-class support for using JavaServerFaces with Spring

The modules of the Web Flow 2 distribution and their relationship with the Spring Framework are illustrated below:

What's in Web Flow 2

Web Flow 2 Distribution Components

 

Spring Web MVC

The Spring Web MVC framework, a module of the Spring Framework distribution, provides the foundation for developing web applications with Spring using the proven ModelViewController paradigm. Each of the modules of the Web Flow distribution builds on this foundation.

Spring Web Flow

The Web Flow module is a MVC extension that allows you to define Controllers using a domain-specific-language. This language is designed to model user interactions that require several requests into the server to complete, or may be invoked from different contexts.

Spring JavaScript

Spring JavaScript is a JavaScript abstraction framework that makes it easy to write unobtrusive JavaScript to progressively enhance a web page with behavior. The framework consists of a public JavaScript API along with an implementation that builds on the Dojo Toolkit. Spring.js aims to simplify the use of Dojo for common enterprise scenarios while retaining its full-power for advanced use cases.

Spring JavaScript can work with any server-side framework. The Web Flow 2 distribution includes convenient integration between Spring JavaScript and Spring Web MVC for processing Ajax requests.

Spring Faces

The Spring Faces module contains Spring's support for JavaServerFaces. This support allows you to use JSF as a View technology within a familiar Spring MVC and Web Flow Controller environment. With this architectural approach, you combine the benefits of the JSF UI component model with the benefits of a Web MVC architecture. Spring Faces also includes a lightweight component library built on Spring JavaScript for declaratively enabling Ajax and client-side validation behaviors in a progressive manner.

Themes of the Web Flow 2 Release

In addition to introducing the new Spring Faces and Spring Javascript modules, the Web Flow 2 release effort addresses two major themes: Integration and Simplicity.

Integration

Across each of the modules, the Web Flow 2 distribution adds a number of interesting integrations that allow you to enrich your web applications. These integrations support:

  • Using Spring Security to secure your flows in a declarative manner
  • Using Tiles for JSP page composition and Ajax partial-rendering
  • When using JSF, using Facelets for page composition and layout
  • When using JSF, using Apache Trindad and JBoss RichFaces component libraries
  • Using the Dojo widget system in a progressive and unobtrusive manner; a manner that degrades gracefully if JavaScript is not available on the client

Simplicity

The flow definition language has been simplified tremendously in Web Flow 2 while becoming more powerful overall. These simplifications include:

  • An appoximate 50% overall reduction in lines-of-code when comparing a version 2 flow definition with its version 1 equivalent (example: version 2 vs version 1)
  • A concise syntax for invoking actions using an Expression Language (EL), with support for both the Unified EL and OGNL
  • Declarative model binding and validation, with support for convention-over-configuration
  • Support for reuse at both the flow and state levels using flow definition inheritance
  • Enhanced modularity, allowing a flow and its dependent resources to be packaged together in a self-contained bundle

Release Notes

  • Web Flow 2 requires Java 1.4 or greater and runs on all major Java EE platforms including Tomcat, Jetty, Websphere, WebLogic, and JBoss.
  • Web Flow 2 requires Spring Framework 2.5.4 or greater.
  • Web Flow 2 has been certified by SpringSource as "Platform Ready" and is fit to run on the SpringSource dm Server in OSGi-enabled web applications.

Getting Started

  • To get started using a build system such as Maven or Ant+Ivy, access Web Flow artifacts from the Maven Central Repository.

Additional Community Resources

  • Watch the Ajaxian.com interview where the release and Spring JavaScript are discussed with Dion Almaer.
  • Explore Spring Web reference applications on-line. The Spring Travel application showcases the integrated Web Flow 2 feature set and is included in the distribution. The SpringSource Enterprise Bundle Repository is a real-world application in production built on Spring 2.5 and Spring Web Flow 2.0.
  • If you are an existing Web Flow 1 user, review the migration guide to help in upgrading to Web Flow 2. The WebFlowUpgrader tool automates the conversion of your flows to the version 2 syntax
  • Track updates to the Web Flow source repository with Fisheye
  • Watch for upcoming articles on Web Flow 2 by subscribing to springframework.org

Spring Web Services 1.5.1 Released

Releases | Arjen Poutsma | May 04, 2008 | ...

Dear Spring community,

I'm pleased to announce that Spring Web Services 1.5.1 has been released!

Downloads | Site | Changelog | Announcement

This is the first bug fix and enhancement release in the Spring-WS 1.5 series. It fixes all bugs reported since 1.5.0 and introduces various enhancements throughout the framework:

  • Introduced a Spring JMS MessageConverter that uses OXM marshallers
  • Introduced a Spring MVC View that uses OXM marshallers
  • Fixed WS-Security signatures when using WSS4J in combination with SAAJ messages
  • Support for timeouts on HTTP transports
  • Support for Castor 1.2, see note below
  • Airline sample now uses Spring Security

and more. Please see the changelog for details.

Please note that - due to a backwards compatibility issue - the CastorMarshaller now requires Castor 1.2 or higher.

Cheers,

Arjen Poutsma
Spring Web Services Lead

Spring Security 2.0.1 Released

Releases | Ben Alex | May 02, 2008 | ...

Spring Security 2.0.1 is now available.

Download | Changelog | Announcement | Web Site

Spring Security 2.0.1 provides a number of fixes to the recent 2.0.0 release. It also offers some further improvements in relation to OSGi support, extended namespace configuration, and cryptographically-strong token generation. It is entirely backward compatible with 2.0.0 and can be used as a drop-in JAR replacement.

Spring Security 2.0.0 Released!

Releases | Ben Alex | April 15, 2008 | ...

Spring Security 2.0.0 is now available.

Download | Changelog | Announcement | Web Site

After almost two years of development, Spring Security 2.0.0 is now available for download. This significant new release replaces Acegi Security as the official security module for Spring applications. It offers substantially simplified configuration, and countless other new capabilities including OpenID, NTLM, JSR 250 annotations, AspectJ pointcut support, domain ACL enhancements, RESTful URI authorization, groups, hierarchical roles, user management API, database-backed "remember me", portlet authentication, additional languages, Web Flow 2.0 support, Spring IDE visualization and auto-completion, enhanced WSS support via Spring Web Services 1.5 and much more.

Spring Web Flow 2.0.0.RC1 Released

Releases | Keith Donald | April 14, 2008 | ...

Dear Spring Community,

We are pleased to announce that Spring Web Flow 2.0.0.RC1 is now available. Download | Documentation

2.0.0.RC1 introduces several new features, and fixes all known issues reported against previous milestones.

We recommend upgrading to 2.0.0.RC1 from previous Web Flow 2 milestones. We also recommend Web Flow 1 users begin evaluating their upgrade to Web Flow 2 at this time, as RC1 introduces comprehensive version 2 documentation, as well as a tool for automating the conversion of version 1 flows to the version 2 syntax.

The best way to get started with Web Flow 2 is to evaluate the reference applications included in the distribution and supplement with the reference guide.  Spring Web Flow 2 requires Spring Framework 2.5.3 and Java 1.4 or above. 

Find the new and noteworthy in the 2.0.0 RC1 release below:

2.0.0.RC1 New and Noteworthy

  • Introduced the Web Flow 2 reference guide, available in PDF and HTML format. The new guide is written in "quick reference" style with runnable code examples. Read it on-line, or download the printable PDF.
  • Added support for upgrading from Web Flow 1 to 2. Included in this distribution is a WebFlowUpgrader tool capable of converting flows from the version 1 syntax to the version 2 syntax. See the reference guide for instructions on how to use this tool
  • Added support for flow definition inheritance. With this feature, A flow may extend one or more flows. A flow state can also extend another state. This feature is used to facilitate reuse between flows and states that share a common structure.
  • Introduced Spring Portlet MVC support. See the Portlet section of the reference guide and the booking-mvc-portlet and booking-faces-portlet sample applications for examples.
  • Formally introduced the new "Spring Javascript" module, included within spring-js-2.0.0.RC1.jar. This module provides a Javascript abstraction framework for applying client-side behaviors such as form validation and Ajax in a consistent manner. It also bundles a ResourceServlet for serving Javascript and CSS from jars (a CSS framework is included as well). The default UI toolkit this framework builds upon is Dojo 1. Spring's JSF integration module called "Spring Faces" builds on spring-js to provide a lightweight JSF component library for form validation and Ajax.
  • Added Spring Faces integration with the RichFaces JSF component library. Rich Faces can be used with the Spring Faces component library or used standalone. A sample application illustrating this integration is available in our JIRA system.
  • Added a "jsf-booking" reference application that offers a comparsion between a traditional JSF web application and a Spring web application that uses JSF as the UI component model. Compare jsf-booking with booking-faces to see the differences in the architectural approach and implementation. This comparison is particularly relevant to JSF developers interested in learning more about Spring.
  • Introduced support for automatic model binding and validation with Spring MVC. This support provides a concise alternative to manual FormAction setupForm and bindAndValidate calls. This support also allows registration of data input Formatters application wide, reducing the need to manually register PropertyEditors on a view-by-view basis in many cases. Support for suppressing data binding for a event such as a cancel button click is provided. Support for invoking validators by convention is provided. See the booking-mvc sample for an example.
  • Introduced view scope. View scope is allocated when a view-state enters and destroyed when a view-state exits. The scope is useful for updating a model specific to one view over a series of Ajax requests. It is also the scope used to manage JSF component state.
  • Added support for flow message bundles. Create a messages.properties file in your flow's working directory for the Locales you need to support and off you go.
  • Introduced configurable view-state history polices. A view state can preserve its history to support backtracking, discard its history to prevent backtracking, and invalidate all previous history to disallow backtracking after a point of no return. See the new 'history' attribute on the view-state element.
  • Refined the flow execution snapshotting process. These refinements capture view-state form values on postback to support restoring those values when backtracking. This preserves edits when going back using the browser back button for data stored in flow scope.
  • Simplified flow execution testing by allowing you to jump to any state to begin a test case. See the booking-mvc and booking-faces for examples of flow test cases.
  • Improved booking-mvc as a reference application showing @Controllers together with Flows. A new FlowHandler concept provides a clean bridge between Controllers and Flows, allowing the two types of handlers to interact in a structured manner. Also improved the organization of the reference application Spring configuration to illustrate best practice.
2.0.0 Final is right around the corner! Enjoy!

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring Runtime offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all