Brian Leathem

5 minute read

RichFaces

RichFaces 4.5.0.Final is now available for download! RichFaces 4.5 is a significant improvement over the previous 4.3 release, offering JSF 2.2 compatibility, new components, a simplified build and distribution layout, and Page Fragments for simplified functional testing. Please read below for details on each of these improvements..

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.5.0.Final. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

Compatibility with RichFaces 4.3: RichFaces 4.5 is intended to be backwards compatibility with RichFaces 4.3 and should be a drop in replacement into your applications, requiring only changes in your pom.xml.

Any breaking changes with RichFaces 4.5 are being tracked in our GitHub wiki migration page. Please update that wiki page with a Pull Request if you find any incompatibilities.

JSF 2.2 Compatibility

RichFaces 4.5 has been developed and tested against both JSF 2.1 and 2.2. Go forth and take advantage of the new features available in JSF 2.2.

Chart components

Thanks to the hard work of our Google Summer of Code student and subsequent intern Lukas Macko, we are providing a set of Chart components in RichFaces 4.5. Use these components to graphically represent the data in your applications with a similar API as the rest of your JSF components.

Read more about the RichFaces 4.5 charts in Michal Petrov’s blog post on using charts.

Component improvements

A number of existing components have seen some improvements in RichFaces 4.5. These are outlined below:

Select component with autocomplete

The <rich:select> component has been augmented to support the same auto-completing functionality as the <rich:autocomplete> component. The rule-of-thumb to keep in mind when deciding between incorporating either of these similar components is as follows:

  • use the <rich:select> component when auto-completing a list of backend objects.

  • use the <rich:autocomplete> component when auto-completing with text-based input.

Built-in sorting and filtering of the DataTable

The <rich:dataTable> has picked up the built-in sorting and filtering capabilities that have been available for some time in it’s big brother the <rich:extendedDataTable>.

If you are already using the <rich:dataTable> in your application with custom controls, and do not wish to take advantage of the built-in controls, then please refer to the Component reference for instructions on disabling the builtin sorting and filtering controls.

Push with web-sockets

We’ve upgraded our atmosphere dependency to version 2.2, allowing our <a4j:push> component to take advantage of web-sockets. The component will gracefully fall-back to long-polling when web-sockets are not available in either your deployment container nor in the browser.

Fileupload

The <rich:fileupload> component has been re-worked to take advantage of the new APIs provided with the Servlet 3.0 specification. This re-implementation has allowed us to add some new features. Check out the Fileupload sample in the showcase to play with the new implementation.

Under the hood

A number of improvements have been made in RichFaces 4.5 under the hood, these include:

A new ExtendedPartialViewContext

The new RichFaces EPVC extends the PVC in Mojarra, rather than fork it. This has the effect of not only making our EPVC easier to maintain with new Mojarra releases, but also eases compatibility with other JSF libraries.

However, due to a patched bug in Mojarra, our new EPVC will only work with newer Mojarra releases. As such we’ve implemented a check verifying that you are running in a container providing Mojarra ≥ 2.1.28 or ≥ 2.2.6. MyFaces is not affected by this bug.

Simplified build

The build in RichFaces 4.5 has been greatly simplified. We’ve consolidated the RichFaces source down to a single github repository. Along with improvements to the CDK, we have been able to drastically reduce our developer turnaround time when working with the framework.

It’s also expected that this simpler build structure will encourage more community contributions, so get those Pull Requests coming!

Page Fragments

If you do functional testing (or would like to) and haven’t yet looked at the Arquillian Graphene Page Fragments, then do yourself a favour and do so.

This is all the more relevant with our RichFaces 4.5.0.Final release as our RichFaces QE team has ported their set of page fragments for RichFaces components to the framework, providing you with a stable set of page fragments matching the shipped components. Write your tests to the stable page fragments API, and you won’t be caught by surprise with failing tests when the DOM implementation of a component changes in a future release.

Have a look at one of our Framework tests to see these page fragments in action.

Asciidoc

We’ve ported the RichFaces docs from the hard-to-work-with docbook xml to the writer’s paradise that is Asciidoc. This migration was motivated in large part by the Asciidoc improvements introduced by the Asciidoctor team. Thanks guys!

The docs are on github and ready for pull requests!

Release Notes

Check out the Release notes for a list of the issues addressed since the 4.5.0.CR2 release.

A bug with Mojarra

An unfortunate regression in Mojarra caused by the fix to JAVASERVERFACES-3152 has broken a number of RichFaces components when nested in a <ui:repeat> component (see RFPL-3506). We are working with the Mojarra team to see this resolved (via JAVASERVERFACES-3452).

In the mean time please use the <a4j:repeat> component as a workaround.

Next steps

We will follow on the 4.5.0.Final release with a series of micro releases further improving the stability of our framework. There are no planned additional releases of the 4.3 branch.