I'm pleased to announce the availability of the Public Review revisions of the next release of the JavaServerTM Faces and Pages specifications. The Faces spec may be downloaded from <http://www.jcp.org/en/jsr/detail?id=252> and the Pages spec may be downloaded from <http://www.jcp.org/en/jsr/detail?id=245>We really want feedback! Please use our Forum to share your thoughts on the specs. Or you may send feedback to the comments alias for Faces or JSP (email@example.com and firstname.lastname@example.org) .
In this entry, I link to a comprehensive high level outline of the changes to the spec since the 1.1 release of the Faces spec. I've decided include changes present in the December Early Draft Release as well as the current release for completeness. Keep in mind this is a high level outline, for details, I encourage you to read the relevant sections of the spec itself.
Before we get to the outline, here is a brief summary of the main changes:
The expression language used in Faces, which was inspired by the expression language used in JSTL and JSP, has been generalized and extracted into its own top level
javax.elpackage. The EL is agnostic of the technology hosting it, such as JSP or Faces, and is intended to be generally useful in the same way one can use OGNL in a variety of applications. Faces now has deprecated its internal EL in favor of using the Unified EL.
New Tree Creation and Content Interweaving Model for Faces applications that use JSP
While it is perfectly acceptable to use Faces without using JSP, many people find their productivity increases when using these two technologies together. Unfortunately, as amply documented by Hans Bergsten in his article at onjava.com, there were some integration cases that didn't work as expected. By changing the specification of the implementation of the Faces ViewHandler for JSP, as well as changing the JSP custom tag base class used by all Faces component tags, these problems have all been resolved.
Integration with JSTL
Another long standing problem was in using JSTL's
<c:forEach>tag to contain Faces input components. Because JSP has no notion of a postback, it was not possible to apply the values correctly to the nested input components on postback. By introducing some new concepts into the EL, it is now possible to fully use
<c:forEach>with any kind of Faces component. This will require a new release of JSTL, which will also be present in J2EE 5, along with Faces and JSP.
Back Button issues and Multi Frame or Multi Window Faces Apps
Due to a deficiency in the State Management API using Faces in Multi Frame or Multi Window applications presented some problems. The browser back button also could cause application state to become confused. These problems have now been fixed.
Associating a message with a particular component in the page.
Previous revisions of the spec didn't allow for dynamically including the label of a component in an error message for that component. New spec features now allow for this to happen.
The golden question, of course, where's the implementation? It's all implemented, but the implementation of the Faces spec is only partially available, due to the unavailability of a public implementation of the JSP 2.1 spec. There are two reasons for this.
We heavily leverage the new, Unified EL, that is a separate spec document but, for convenience, is being delivered under the JSP 2.1 spec. So, while using the Unified EL does introduce a dependency on JSP 2.1, there is nothing stopping someone from implementing the EL spec outside of JSP.
In order to fix the Tree Creation and Content Interweaving problems (which are inherent to the old way of using Faces and JSP together, and therefore already implicitly dependent on JSP), as well as using <c:forEach> with Faces input components (and therefore implicitly dependent on JSTL), we had to make changes to the JSP spec, which are being delivered as part of JSP 2.1
The parts that are unavailable are those parts that a user would encounter only when using Faces and JSP together. The parts that are available are those parts that a user would encounter whether they use Faces with JSP or not. Features that are unavailable at this time are listed in gray, available features are listed in non-gray text. Available features are present in the latest release of the official Faces implementation on java.net which continues to run on J2EE 1.3 containers. Note that the content in section IV is mostly available.
Now, the outline of changes is available here.