Thursday, February 28, 2013

RichFaces 4.3.1.CR1 Release Announcement

RichFaces

The first candidate release of RichFaces 4.3 (4.3.0.CR1) has been released. This micro release addresses some bugs present in the RichFaces 4.3.0.Final release, and offers some improvements on the new features introduced in that same release. Have a look at the 4.3.1.CR1 Release Notes for a complete listing of what has been included in this release.

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

Concurrent testing efforts

Normally we leave RichFaces releases in our Nexus staging server until the RichFaces QE team has fully verified the release. With this release however, we are trying something new.

We have promoted the RichFaces 4.3.1.CR1 artifacts out of staging having only undergone a smoke test. In this way we are enabling the community to try out the latest fixes concurrent to our execution of our extensive automated test suite, and the remainder of our QA process.

So please do take this candidate release out for a spin, and report any issues you uncover so we can address them before the 4.3.0.Final release.

Friday, February 1, 2013

RichFaces 4.3.0.Final Release Announcement

RichFaces

I’m very excited to announce the availability of the final release of RichFaces 4.3 (4.3.0.Final). This release is minor in version increment only, as it packs quite a significant number of features and improvements. We’ve covered many of these features in blogs already, we’ll summarize them again here, and provide links to where you can find additional details.

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

New components

We’ve delivered some new components with this release. These are components that were originally contributed by Bernard Labno via the RichFaces Sandbox. The new components we shipped are:

  • <rich:focus> – used to manipulate the cursor focus on a page. The component is integrated with the JSF life-cycle to enable validation-aware focus capabilities.
    Blog Read the rich:focus component blog post for more details.
  • <rich:placeholder> – pre-fills form inputs with text, similar to the HTML 5 placeholder attribute.
    Blog Learn more about it in the rich:placeholder component blog post.

New Features

Aside from the new components, a number of existing components have seen some significant feature additions. The <rich:extendedDataTable> for instance has added support for built-in sorting and filtering, and table-state saving.
Blog We have a blog dedicated to the EDT improvements in RichFaces 4.3.

New with RichFaces 4.3 is the ability to define child toggle panels with the <a4j:repeat> tag. This offers developers additional flexibility when defining child toggle panels when <c:forEach> is insufficient.
Blog Check out the Dynamic Panels with a4j:repeat blog for more details.

Testing

Automated testing has always been central to RichFaces. We have a great QE team behind the framework that works hard to help us deliver solid releases. But with RichFaces 4.3 we’ve taken our automated tests to the next level.

We’ve developed the Arquillian extensions Warp and Graphene to enable us to author real tests, running in real containers, with real browsers. Through the magic of Arquillian and Shrinkwrap, these tests are still fast both to author and to execute.
Blog Read more about it in this deep dive to testing in RichFaces 4.3.

CDK improvements

Early on in our RichFaces 4.3 efforts we delivered a number of improvements to our Component Development Kit (CDK) which we used throughout this release to reduce our developer turnaround time in creating new components and features. In addition to enriching the CDK templating language, we introduced an incremental build feature in the CDK. This incremental build has proven to be so beneficial that is one of the primary drivers behind the RichFaces 5 build redesign.

Blog Refer back to this blog for further details on Incremental build with the RichFaces CDK

Bug fixes

With so many shiny new features to look at, it would be easy to overlook the number of bugs fixed in the release. In total 242 issues were addressed in this release. An epic effort for an epic release!

Path forward

As I just hinted, our steps forward are on the path to RichFaces 5. We’ve already started working on the new consolidated RichFaces 5 repository. Feel free to comment with where you’d like to see the project head in RichFaces 5 in the RichFaces developer forum thread.


Monday, January 28, 2013

Dynamic Panels with a4j:repeat

RichFaces

With the imminent 4.3.0.Final release of RichFaces, we will be providing developers with the ability to dynamically create <rich:togglePanel>, <rich:accordion>, and <rich:tabPanel> panel items dynamically with the <a4j:repeat> tag.

<a4j:repeat> vs. <c:forEach>

Creating the above panels from a backing bean list has always been possible with RichFaces 4 using the JSTL <c:forEach> tag, so why have we bothered adding support for creating such panels with the <a4j:repeat> tag? The answer to that requires an understanding of when the JSTL tags are evaluated during the creation of the JSF component tree, and subsequent page render:

TL;DR: JSTL tags are evaluated during the compilation of the Facelet, during the construction of the component tree, whereas <a4j:repeat> is evaluated during the render phase of the JSF life-cycle.

For a great/detailed explanation of the JSTL tag / Life-cycle interaction, I’ll refer you to this blog post.

So if you are currently using the <c:forEach> tag to define dynamic child toggle panel items, and are noticing an issue on post-back when the list backing the panel items may have changed, be sure to try using the tag instead.

Using the <a4j:repeat>

Refer to the showcase snapshot for examples of using the <a4j:repeat> tag with the above listed family of toggle panel items:

The 4.3 release

RichFaces 4.3.0.CR2 is currently available, and RichFaces 4.3.0.Final will be available shortly. Please take the time to take try out the <a4j:repeat> tag to define relating toggle panel items, and give us your feedback for the new features and bug fixes via the RichFaces forum or issue tracker.


Friday, January 25, 2013

RichFaces 4.3.0.CR2 Release Announcement

RichFaces

The second milestone release of RichFaces 4.3 (4.3.0.CR2) has been released. This release candidate for the RichFaces 4.3 is an incremental release on top of the previous release candidate (4.3.0.CR1), providing a few bug fixes and documentation enhancements.

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

Behaviour change for <rich:notify>

The RichFaces notify* components did not previously escape message content. This can lead to a security vulnerability in your applications, so we’ve changed the notify* components to escape message content by default, and provided the escape attribute to disable escaping of the message content.

If you previously had HTML content in your notify* components, you will need to add the escape=false attribute to achieve the same behaviour as in previous RichFaces releases.

Moving forward

We’ll again let RichFaces 4.3.0.CR2 bake in the community for a few days. Be sure to try it our with your applications and report any regressions you should come across that may have been overlooked by our QE team. We are aiming to have a final release out next week.


Tuesday, January 22, 2013

What's new with the RichFaces extendedDataTable

RichFaces

The upcoming 4.3 release of RichFaces will offer the RichFaces community a number of improvements to the extendedDataTable. These new features include:

  • Built-in sorting and filtering
  • External table state saving
  • A number of bug-fixes

Built-in sorting and filtering

The RichFaces 4 extendedDataTable (EDT) has always had the ability to sort and filter columns, but required the developer to define the sort and filter controls themselves, then manually invoke the required operations on the back-end. While not difficult to do, a lot of boiler-plate code was required for what is in fact a common operation. With RichFaces 4.3 we’ve resolved RF-8125 that tracked a long standing request to port the built-in search capabilities form the RichFaces 3 EDT to RichFaces 4.

Built-in sorting/filtering is currently only available in the extendedDataTable component. We will add support to the dataTable component in a subsequent release.

Built-in Sorting

Implementing sortable columns in the EDT is now as simple as adding the sortBy attribute to your EDT column, and the sort controls will automatically be generated and linked to the internal sorting mechanism. To influence how the sorting is performed, add the comparator attribute to your column, and the comparator defined there will be used for the sort.

Refer to the RichFaces 4 Component Reference for additional details on using the built-in and external sort controls.

If you require additional flexibility, and prefer to implement your own sort controls, set the sortType=custom attribute, and the built-in sort controls will not be rendered. Built-in sort controls can be disabled altogether by setting the web.xml context param org.richfaces.builtin.sort.enabled to false.

Built-in Filtering

Similarly, taking advantage of the built-in filter controls is also straightforward. Define the filterValue attribute on the column to be filtered, then define either a filterExpression or filter attribute to implement the filter logic. When the attributes are present an input element will be displayed in the column header. Simple value conversions are performed implicitly in the EL of the filterExpression or explicitly in the filter implementation.

Refer to the RichFaces 4 Component Reference for additional details on using the built-in and external filter controls.

Further control over the filter controls can be achieved by setting the filterType=custom attribute, and implementing your own filter controls in the back-end. Built-in filter controls can be disabled altogether by setting the web.xml context param org.richfaces.builtin.filter.enabled to false.

ExtendedDataTable State Saving

The EDT has had another RichFaces 3 feature ported forward: table state saving. With the resolution of RF-10442, application developers can add the tableState attribute to their EDT components, providing a value-binding to a bean String property that can be used to store the state of the column width, sequence, sorting, and filtering of the EDT. The table state is stored in a JSON string format, and is easily stored in a data base for later retrieval.

Bug fixes

In addition to the above feature additions, the EDT has seen a number of bug fixes in the 4.3 release. These fixes include:

RF-10154
UIDataAdaptor vs. UIData visitTee small difference
RF-10799
EDT – attribute @clientRows missing in taglib
RF-11382
Datatable and ExtendedDatatable evaluate value attribute even if rendered=false
RF-11776
rich:extendedDataTable columnsOrder attribute is not working
RF-12236
showcase – rich:extendedDataTable – re-sizing columns breaks horizontal scrolling
RF-12450
Collapsible subtable toggler not rendered
RF-12611
rich:dataTable doesn’t call restoreState() on a row-level composite component
RF-12639
rich:extendedDataTable inside rich:tab: The columns which are not frozen are not rendered after switching the tab for the first time in IE 8.
RF-12659
ExtendedDataTable layout breaks when table element width set to 100%
RF-12672
Collapsible sub table: noData facet doesn’t work inside switchable panels
RF-12684
The last page shows rows from the page before if rich:collapsibleSubTable is included in rich:dataTable with rich:dataScroller.
RF-12691
extendedDataTable: Header facet render problem in RichFaces 4

The 4.3 release

RichFaces 4.3.0.CR1 is currently available, having undergone our extensive QA process, and a 4.3.0.CR2 release will be available shortly. Please take the time to take the extendedDataTable for a spin with this release, and give us your feedback for the new features and bug fixes via the RichFaces forum or issue tracker.


Thursday, January 17, 2013

RichFaces 4.3.0.CR1 Release Announcement

RichFaces

The first candidate release of RichFaces 4.3 (4.3.0.CR1) has been released. This release candidate for the RichFaces 4.3 release doesn’t add any new features, rather it polishes, documents, and showcases the many new features added in the earlier 4.3 milestones (4.3.0.M3, 4.3.0.M2, 4.3.0.M1).

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

Documentation updates

If you are interested in taking advantage of some of the new feature additions described in the earlier milestone release blogs, be sure to check out the updated RichFaces 4.3.0.CR1 documentation, and the showcase snapshot which demos the latest updates to the showcase.

Some of the documentation highlights include:

Also, check out the code samples in the showcase:

Bug fixes

Most of the bug fixes in CR1 centered around the new 4.3 features. These bug fixes include:

Validation fixes

  • RF-12700 – LongRangeValidator client-side messages differs from server-side ones on MyFaces
  • RF-12669 – Autocomplete: client side validation for custom validators doesn’t work

Select component fixes

  • RF-12608 – pickList without collectionType results in failure to lazily load
  • RF-12692 – rich:select – unknown validator SelectLabelValueValidator

New component fixes

  • RF-12650 – rich:placeholder: when @rendered=false the placeholder is still rendered
  • RF-12668 – rich:focus – stops to work when containing form is re-rendered by another form
  • Iteration component fixes
  • RF-12662 – Showcase – rich:extendedDataTable – Built-in sorting and filtering – ELException when text filter value provided instead of expected numbers
  • RF-12691 – extendedDataTable: Header facet render problem in RichFaces 4
  • RF-12672 – Collapsible sub table: noData facet doesn’t work inside switchable panels
  • RF-12673 – Collapsible sub table: filtering doesn’t work inside switchable panels
  • RF-12684 – The last page shows rows from the page before if rich:collapsibleSubTable is included in rich:dataTable with rich:dataScroller.
  • RF-12714 – Showcase and rich:dataTable: sorting in Arrangeable demo doesn’t work

JSF compatibility fixes

  • RF-12670JSF 2.0 compatibility issue, NoSuchFieldError: javax/faces/component/visit/VisitHint.SKIP_ITERATION
  • RF-12693 – Mojarra fails to encode form inputs correctly when they doesn’t have name attribute

Drag and drop fixes

  • RF-12666 – Showcase – Drag and Drop with indicator – the styles do not apply for indicator when dragging over various targets
  • RF-12671 – dropTarget does not work inside dynamic tabs when switchType is ajax or server
  • RF-12703 – showcase – drag and drop – JS error with default dragIndicator

Input fixes

  • RF-11067 – rich:autocomplete popups with suggestions does not reflect the value in input
  • RF-11565 – Showcase: multiple selections in rich:autocomplete doesn’t work when ‘clicking’ is used
  • RF-12707 – rich:calendar – setValue(…) method from javascript API doesn’t work correctly

Misc fixes

  • RF-12708 – rich:jQuery: wrong VDL documentation of selector attribute
  • RF-12716VDL-doc for a4j:ajax incorrectly states that the listener method cannot accept parameters
  • RF-12709 – richfaces.js: fire ajaxcomplete event
  • RF-12705 – vdl documentation for a4j:outputPanel contains non-implemented layout="none"
  • RF-12713 – Listeners don’t work inside panels

Moving forward

We’ll let RichFaces 4.3.0.CR1 bake in the community for a few weeks. Take it for a spin, and report any regressions you should come across that our top-notch QE team might have overlooked. Hopefully we can have a final release out by the end of the month.


Thursday, December 20, 2012

RichFaces 4.3.0.M3 Release Announcement

RichFaces

The third milestone release of RichFaces 4.3 (4.3.0.M3) is now available. This 3rd and final milestone for the RichFaces 4.3 release brings in a number of huge features, including new components, some long-time outstanding feature migrations from RichFaces 3, and some significant bug fixes. Read on for some details of these release highlights, or go straight to the Release Notes for a complete list of what’s been addressed.

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

New Components

We’ve incorporated a couple of RichFaces Sandbox components in RichFaces 4.3.0.M3: the rich:focus and rich:placeholder components, created by Bernard Labno.

We will update the RichFaces Documentation with all the details of these new components in the course of our 4.3.0.CR1 preparations. In the mean time feel free to explore these components yourselves referring to the showcase snapshot samples linked to below.

rich:focus

The rich:focus component provides a rigorous means of controlling which inputs on your page have the keyboard focus. The focus manager integrates with JSF to automatically focus Inputs that fail validation.

Have a look at the demo in our showcase snapshot for an example of how to use the focus component.

rich:placeholder

The placeholder component let’s one set a “hint” that is a description of the expected value of an input component This component allows RichFaces developers to take advantage of the HTML 5 placeholder attribute functionality in all browsers, including in those browsers that don’t explicitly support the attribute.

Check out the usage examples in the RichFaces showcase snapshot to see how the placeholder component is used.

New ExtendedDataTable Features

With this third milestone release of RichFaces 4.3, we’ve ported a couple of new features forward for the rich:extendedDataTable component. Both the table state saving functionality and built-in sorting/filtering features from RichFaces 3 have been ported to the RichFaces 4 implementation on the rich:extendedDataTable. Check out the built-in sorting/filtering in our showcase snapshot sample.

The introduction of built-in sorting/filtering will have a noticeable side-effect for those of you already using sorting/filtering functionality with the rich:extendedDataTable. To prevent a “doubling up” of the controls, you will have to introduce the sortType="custom" and filterType="custom" attributes.

With RichFaces 4.3.0.CR1 we will provide a way to centrally disable built-in sorting/filtering allowing users to adopt RichFaces 4.3 without any required code changes.

Ajax improvements

A number of fixes have gone into this release in the area of RichFaces ajax, each of these issues is significant in it’s own right:

  • RF-12442 addresses the use of RichFaces with multiform JSF pages, a significant improvement for a number of use cases.
  • RF-12229 fixes broken render="@all" functionality
  • RF-12642 introduces two new events ajaxbegin and ajaxbeforedomupdate

Other Significant Fixes

In addition to the new components and features listed above, I’d like to call out a few more areas that have seen improvements:

Finally I’ll point out we’ve updated a some of the libraries on which RichFaces builds it’s functionality:

Testing improvements

With this milestone we’ve really stretched the legs of the new testing infrastructure based on the Arquillian extensions Graphene and Warp. Our so-called “Fundamental tests” (or “fun tests” for short) run in container and against real browsers and have proved invaluable in issue reproduction, isolation, and verification.

Check out these tests for yourselves and use them as an inspiration for how you can test your own JSF applications. Using this test infrastructure ourselves is helping us to nail down the required APIs and functionality, and we could use your help in ensuring we are covering as many use cases as possible.

Moving Forward

We’ve already been hard at work resolving some bugs and regressions discovered by the RichFaces QA team. These will be available in the new year as our RichFaces 4.3.0.CR1 release, and Final is just one short hop beyond that.

With RichFaces 4.3 nearly complete and under our belt, it’s time to shift focus to RichFaces 5 and all the significant changes we want to bring in with that major release. Be sure to drop by the developer forum and share your insight as to where the project should be headed.