Brian Leathem

5 minute read

RichFaces

The second milestone release of RichFaces 4.3 (4.3.0.M2) is now available. Another significant milestone for the project, this release incorporates a number of new features, bug fixes, and component upgrades. Read on for some highlights of the release, or go straight to the Release Notes for a complete list of what’s been addressed.

div(alert alert-info). To try out this release: You can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.3.0.20121024-M2. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

Community involvement

I’d again like to thank RichFaces community members for their contributions to this release. In total there are 7 community members who have contributed this milestone release! This is a number that makes me incredibly proud to share, and demonstrates how the RichFaces community is truly thriving. So together, as a community, let’s have a collective shout-out to:

Keep the pull requests coming guys!

UIRepeat support in Toggle Panels

With the resolution of RF-9443, the RichFaces increases support for the <a4j:repeat> component to dynamically define repeating child panels of components that extend AbstractTogglePanel class. This includes:

While it has always been possible to use the JSTL <c:forEach> tag to define child panel components, this did not meet all use cases, as the JSTL tags are evaluated before the component tree is built, and hence don’t play nice when the underlying data model changes without performing a full page reload. With the new support for defining child panels using the <a4j:repeat> syntax, evaluation is deferred until render time, making the child panels “truly dynamic”.

The implementation of this leans heavily on the RichFaces UIDataAdaptor, which forms the basis for all repeating RichFaces components. stay tuned for a blog demonstrating <a4j:repeat> usage to dynamically define repeating toggle panel items, and be sure to test this feature out in this milestone release, to be sure the feature meets your requirements for dynamic repeating panel components - let us know if it doesn’t!

div(alert alert-warning). Note: this feature does not yet support the use of the <a4j:repeat> tag for defining dynamic columns. That issue is being addressed as part of RF-7882.

CDK incremental build

With this second 4.3.0 milestone, we’ve carried on with some of the CDK improvements we saw in our first milestone. This time we’ve added support for incremental build with the RichFaces CDK, greatly reducing the time it takes to build RichFaces components, as the CDK now only processes CDK templates and resources that have been touched since the previous build.

Making use of the incremental build for the “RichFaces Components” project reduces the project build time from 2m18s to 1m00s – a 56% decrease in build time. A further reduction in project build time is seen with the proposed new build structure, where we do away with the independent artifacts, and their associated assembly steps.

This is an important achievement, as reducing the turnaround time from IDE to browser improves developer productivity, and let’s RichFaces developer’s more quickly and efficiently deliver bug fixes and new features.

Component Upgrades

A number of libraries within the project have been upgraded in this milestone. This includes upgrading:

In addition, upstream changes in Mojarra required some significant changes to jsf-test, and the jQuery upgrade necessitated upgrading some of the jsf-test libraries as well:

While we currently use jsf-test to mock the faces context and execute our RichFaces unit tests, I’ll take this opportunity to plug the Arquillian extensions Graphene and Warp which the RichFaces Dev and QE teams are developing to allow us to take advantage of the Arquillian revolution, and unit test our components in real containers. Head on over to the Arquillian site to learn more about using these extensions to test your own JSF/RichFaces applications.

Noteworthy fixes

In addition to the above features, RichFaces 4.3.0.M2 delivers a number of additional features and bug fixes, including the fixes released with RichFaces 4.2.3.Final. Some noteworthy fixes include:

RF-12360 The onchange behaviour of the <rich:pickList> has been changed to fire whenever the picked value list changes, rather than waiting until the component loses focus.

RF-12397 A MyFaces profile has been added to the RichFaces showcase build

RF-12457 The <rich:validator> has two new attributes onvalid and oninvalid that can be used to trigger a javascript callback when validation succeeds/fails. Thanks for this addition Bernard!

RF-12492 A visual improvement, the <rich:inputNumberSlider> gets a new handle, in the style of the progress bar.

Moving forward

As per the RichFaces road map, we have one final milestone scheduled for RichFaces 4.3. Work has already begun on RichFaces 4.3.0.M3 after which there will be a CR1 release, followed (hopefully!) by the Final release. Then it’s on to RichFaces 5 where we will implement the new RichFaces build. Tune in to the RichFaces developer forum, where we will soon start the discussion and planning of what will be in RichFaces 5 in addition to this build re-structure.