Release Notes‎ > ‎

OpenFaces 2.0 Release Notes

posted Nov 4, 2010, 7:46 AM by Unknown user   [ updated Nov 8, 2011, 7:11 AM by Dmitry Pikhulya ]

Below are the changes that were made since the last early access release, OpenFaces 2.0 EAP2. Please take a look at the What's New in OpenFaces 2.0 document if you'd like to see all changes since the last 1.x release.

New Components

  • CompositeFilter – allows the user to build complex filter crieteria with multiple filter conditions. Works as a standalone component or can be bound to DataTable/TreeTable components to filter their data.
  • LayeredPane – a container that allows switching between different sets of displayed components.
  • SelectOneRadio – an extended version of the standard <h:selectOneRadio> component, which provides additional styling options and makes it possible to customize radio buttons with images.
  • SelectManyCheckbox – an extended version of the standard <h:selectManyCheckbox> component, which provides additional styling options and makes it possible to customize radio buttons with images.
  • CommandButton – an extended version of the standard <h:commandButton> which includes the Ajax features and an ability to customize button's content with sub-components or HTML.
  • CommandLink – an extended version of the standard <h:commandLink> which includes the Ajax features.


  • Ajax settings:
    • It's now possible to customize Ajax progress message position with new horizontalAlignment/verticalAlignment attributes of <o:defaultProgressMessage> tag.
    • Ajax progress message can now be made semitransparent and shown with a smooth transparency transition (see <o:defaultProgressMessage> tag documentation).
    • Added an option to disable mouse interoperation by shading window contents while Ajax request is in progress (see <o:defaultProgressMessage> tag documentation).
    • It's now possible to customize the appearance of session expiration confirmation (see the <o:defaultSessionExpiration> tag documentation).
  • DayTable:
    • Added <o:daySwitcher> subsidiary component for <o:dayTable> that simplifies navigation between days and provides multiple customization options for representation of selected date.
  • DataTable/TreeTable:
    • Added support for content scrolling with header/footer row(s) freezing for DataTable and TreeTable components. Both vertical and horizontal scrolling with fixed columns is supported. See the Content Scrolling section in DataTable and TreeTable documentation for details.
    • Added support for interactive drag & drop column reordering. See the Drag & Drop Column Reordering section in DataTable and TreeTable documentation for details.
    • Added support for interactive column visibility customization. See the Displaying Column Menus section in DataTable and TreeTable documentation for details.
    • Numerous filtering enhancements, see the "DataTable/TreeTable Filtering Enhancements" section below.
    • Added support for specifying a popup menu for table columns, containing either the standard or customized set of actions. See the Displaying Column Menus section in DataTable and TreeTable documentation for details.
    • Added header and footer attributes to all column tags to serve as a convenient replacement for specifying the text in the "header" and "footer" facets.
    • Significantly simplified handling large data sets using Hibernate library. See the Using DataTable with the Hibernate Library section in DataTable documentation for details.
    • There's a new "subHeader" facet in the column tags for DataTable and TreeTable components that allows customizing the contents that appear in the table's header section under the column headers.
    • Added a new DataTable.getPageIndexForRowKey method for scenarios like detecting the page(s) for selected item(s).
    • Improved TreeTable configuration checking and error reporting.
    • DataTable is now automatically focused when the pagination buttons are used.
    • Resolved the known issue where editable and command components couldn't be used in the Ajax-enabled TreeTable.
  • Input components:
    • Added support for floating point numbers in <o:spinner> component along with customizing number format with <f:convertNumber> tag, which allows to set locale and number pattern using syntax rules defined by java.text.DecimalFormat class.
    • Added "auto-growing" feature to the <o:inputTextarea> component, which allows a TextArea to automatically adjust its height based on the amount of typed text. Assign true to theautoGrowing attribute to turn this functionality on.
    • Added autocomplete attribute to <o:inputText> component to match API of the standard <h:inputText> tag.
    • Added stateList attribute to <o:selectBooleanCheckbox> component, which allows to configure set and order of states of SelectBooleanCheckbox in tri-state mode.
  • FoldingPanel:
    • Added a new loading mode "ajaxAlways", which allows loading a fresh content on each expansion of FoldingPanel. Also note the API change: the "ajax" mode has been renamed to"ajaxLazy".
    • FoldingPanel's expansion state is now properly saved when placed inside of iteration components such as <o:dataTable> and <o:forEach>.
  • TabbedPane:
    • Added a new loading mode "ajaxAlways", which allows loading a fresh tab content on each tab switch. Also note the API change: the "ajax" mode has been renamed to "ajaxLazy".
  • PopupMenu:
    • Added built-in Ajax support to PopupMenu items with render and execute attributes.
    • Improved JavaScript performance for PopupMenu components.
    • PopupMenu is now automatically repositioned if necessary to fit visible window's area.
  • Other:
    • Added the caption attribute for <o:foldingPanel><o:window>, <o:sidePanel> and <o:subPanel> (former <o:tabbedPaneItem>) tags, which is a short replacement for the"caption" facet if you need to specify the caption as text.
    • Added built-in Ajax support to the <o:captionButton> tag with render and execute attributes.
    • Added built-in Ajax support to <o:singleRowSelection><o:multipleRowSelection><o:singleNodeSelection>, and <o:multipleNodeSelection> tags with render and execute attributes.
    • Improved JavaScript performance for DataTable/TreeTable components.
    • Added oncontextmenu event for all components.
    • All popups in components like DropDownField, SuggestionField, Calendar, DateChooser, PopupMenu can now be closed by pressing Esc key.
    • Added support for handling mouse events in <o:floatingIconMessage> tag.
    • Extended client-side API for PopupMenu, Window and PopupLayer components with methods isVisible()getLeft(), and getTop().
    • Improved error checking when processing default validation message presentation parameters in web.xml.


      Ajax Framework Changes

      The Ajax Framework API has been significantly modified and extended to make it consistent with the JSF 2.0 API. Tags and attributes have been renamed in accordance with the new specification. Please refer to the "Migrating to the New Ajax API" sub-section in the Migrating from OpenFaces EAP2 document.

      New features have been added to the Ajax (former ReloadComponents) component:

      • It's possible to specify JavaScript code that should be executed on the client when an event defined by event attribute occurred (onevent attribute);
      • New attribute disabled now indicates whether or not the component should render client script on referred component.
      • Ajax component now automatically decides when to disable the default action of the attached component to avoid the conflict between Ajax action and the default action of the attached component (disableDefault attribute removed).


      DataTable/TreeTable Filtering Enhancements

      The filtering API for DataTable and TreeTable components has been significantly reviewed and enhanced. The previous filtering API consisted of filtering-related attributes in <o:column> tag. Although this was enough for a simple API, different kinds of filters require different sets of attributes and additional features require much more attributes, so filters are now organized as separate tags – one tag per one type of filter: <o:inputTextFilter><o:dropDownFieldFilter>, and <o:comboBoxFilter>. Each tag has a set of attributes applicable for that particular type of filter. It's quite easy to migrate to the new API though, see the "Migrating to the New Filtering API" sub-section in the Migrating from OpenFaces EAP2 document.

      Here are the new features that were implemented as part of the new API:

      • It's possible to customize whether search should be case sensitive or not.
      • It's now possible to customize the condition by which search has to be performed (contains, equals, less, greater, etc.).
      • It's now possible to specify style and all other component-specific attributes of filtering components.
      • There's now an option (turned on by default) that makes filtering to be performed on the fly as the user types in the filter field.
      • DropDownFieldFilter now suggests filter text as the user types it.
      • Filters can now be placed outside of their DataTable/TreeTable components.
      • The filtering expression can now be detected automatically when a filter resides in a table column.

      Please see the Filtering section in the DataTable and TreeTable documentation for the comprehensive details on featurs and usage of the filtering functionality.


      Resolved Issues

      • Ajax component (former ReloadComponents component):
        • Fixed the issue where <o:reloadComponents> (now <o:ajax>) inside <h:commandLink> might cause " message was rendered" js error.
        • Fixed input focus loss after Ajax requests.
        • Fixed some cases when <o:reloadComponents> (now <o:ajax>) couldn't find components by id.
        • Fixed <o:reloadComponents> inside <o:dataTable> and <o:forEach>
      • DataTable/TreeTable:
        • Fixed DataTable/TreeTable column resizing issues in IE strict mode and Opera.
        • Fixed improper table column resizing behavior under Chrome and Safari in some configurations.
        • Fixed a known issue of non-working column resizing on tables with common header under Safari.
        • Fixed drop-down table filter size under Chrome and Safari.
        • Fixed filter fields width issue in IE strict mode.
        • Fixed contracting tree indents when resizing columns in TreeTable.
        • Supported rgb-syntax when specifying table gridline styles, e.g. "1px solid rgb(192, 217, 239)" instead of "1px solid #C0D9EF".
      • PopupMenu:
        • Fixed minor sub-menus misalignment in PopupMenu component.
        • Fixed excesssive PopupMenu's focus reacquiring after it is hidden.
        • Fixed unwanted page scrolling when the mouse enters a PopupMenu.
        • Fixed an issue of input fields protruding over PopupMenu in IE6.
        • Fixed an issue where PopupMenu was too wide under IE quirks mode.
        • Fixed unwanted sub-menu blinking when clicking an item while the sub-menu showing delay is in progress.
        • Fixed automatic attaching PopupMenu to TabbedPane and FoldingPanel.
      • Other components:
        • Fixed typing "&" and "(" symbols in DropDownField and SuggestionField components.
        • Fixed clipping popups of drop-down components (DropDownField/SuggestionField/DateChooser) with parent elements having a hidden overflow in IE+quirks.
        • Fixed misplaced Calendar days near DST transition in Southern American time zones.
        • Fixed NPE when changing the rendered attribute of a TabbedPane in an action.
        • Fixed showing/hiding of <o:window> and <o:popupLayer> using binding to visibility attribute.
        • DropDownField and DateChooser components now ensure that the drop-down will be opened in the visible window's area.
        • Fixed using <o:ajax> (former <o:reloadComponents>) inside of <o:menuItem> tags.
        • Fixed "cursor transparency" over DropDownField/DateChooser components placed into an absolutely positioned container in IE8.
        • Fixed non-working size attribute for <o:twoListSelection> tag.
        • Fixed TabbedPane stealing focus from some of the embedded focusable components (such as DataTable, Calendar, etc).
        • Fixed Spinner buttons appearance in IE.
        • Fixed rollover styles for the Spinner component.
      • Miscellaneous:
        • Fixed not applying styles for some components in IE with "Invalid Argument" JavaScript error on pages with lots of OpenFaces components.
        • Fixed duplicating server-generated content of <h:messages> when opening DateChooser.
        • Fixed compatibility with RichFaces in Facelets environment
        • Fixed security issue where reading files from server's current directory was possible.
        • Fixed JavaScript error when changing the set of validated components with Ajax.
        • Fixed misplaced/disappearing <o:floatingIconMessage> images when Ajax-reloading validated fields in a multi-form page.
        • Fixed compatibility issues between OpenFaces and RichFaces session expiration handling functionality during ajax requests.
        • Fixed excessive "enclosing form cannot be found" log messages when using <rich:modalPanel> component.
        • Fixed issues with state saving during ajax requests under MyFaces 1.2.
        • Fixed getCount() function in iteration status of ForEach component to return a 1-based value instead of 0-based one.
        • Fixed isLast() function in iteration status of ForEach component.


      • DataTable/TreeTable filter fields' text is now not marked with selection for convenient typing after filtering.
      • The default values for the Spinner's minValue and maxValue attributes are now unspecified by default making it possible to enter a number without range restrictions by default.
      • Rollover button style for DateChooser and DropDownField is now applied when mouse is over the button itself rather than over the field.
      • Improved the default look for the PopupMenu component.
      • Completed documentation for all components.


      Migration Instructions

      Please see the Migrating from OpenFaces 2.0 EAP2 document for the migration instructions. If you're migrating from version 1.x of the QuipuKit library, see the Migrating from QuipuKit 1.6.2 document.