Recent Blog Posts

We are glad to announce that OpenFaces 2.0 has "graduated" from the Early Access Program and the final version is released!

 

OpenFaces is an open source JSF library consisting of a set of advanced components, the Ajax framework and the client-side validation framework.

 

6 new components are introduced since the EAP 2 was published:

  • CompositeFilter – allows the user to build complex filter crieteria with multiple filter conditions;
  • LayeredPane a container that allows switching between different sets of displayed components;
  • SelectOneRadio – an extended version of the standard <h:selectOneRadio> component;
  • SelectManyCheckbox – an extended version of the standard <h:selectManyCheckbox> component;
  • CommandButton – an extended version of the standard <h:commandButton> component;
  • CommandLink – an extended version of the standard <h:commandLink> component.

 

DataTable and TreeTable components have been significantly extended with the following functionality:

  • Content scrolling with frozen header/footer rows. Both vertical and horizontal scrolling with frozen columns is supported;
  • Interactive drag&drop column reordering;
  • Interactive column visibility customization;
  • Numerous filtering extensions -- customizing search condition, case sensitivity, placing filters inside or outside the table;
  • Tighter integration with the Hibernate library;
  • And more...

 

Certainly, there are many more extensions and fixes in other OpenFaces components and you can see the full list in the release notes.

 

Use your chance to see the components in action in the Live Demo!

 

We welcome everyone to contribute and participate in OpenFaces development. Please don't hesitate to post your feedback at the product forum or email us and follow OpenFaces on Twitter.

7 Comments Permalink

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.

Enhancements

  • 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 "...no 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.

      Other

      • 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 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.

      0 Comments Permalink

      First, we would like to announce the new OpenFaces_JSF Twitter channel where you can track the development of OpenFaces, receive news, tips, and other notable information about OpenFaces. You're welcome to follow OpenFaces on Twitter!

       

      Also, a couple of words on the upcoming final version of OpenFaces 2.0. The pre-release period of OpenFaces development comes to an end and the date for the final release is now set to Mar, 4, next week. The upcoming version contains 6 new components, significant DataTable and TreeTable improvements, a lot of extensions for other components, the revised and polished API, comprehensive documentation and of course a lot of fixes.

      0 Comments Permalink

      We are happy to announce the second early access (EAP2) release of the OpenFaces AJAX-powered JSF components. The EAP2 release is the last milestone before the version 2.0 release expected in late September. The EAP2 release adds a new Select Boolean Checkbox component, a number of enhancements, several API changes, and resolves issues reported by the developers during the initial evaluation of EAP1 release.

       

      The Select Boolean Checkbox component introduced in this release is an extended version of the standard <h:selectBooleanCheckbox> component which adds tri-state support (two typical states and the third “undefined” one), allows for customizing checkbox images and state-dependent styles.

       

       

      Following numerous requests from our users we’ve also added a new demo application, which shows how OpenFaces components can work together with RichFaces in one application. You can see this demo online, or download the demo and its source code.

       

      Please see the release notes for the full list of enhancements.

       

      Before the OpenFaces 2.0 is released, we also decided to extract a code of the testing system we use for automated tests of OpenFaces components and web applications we build into a separate project called Selenium Inspector. This testing framework, built on top of Selenium, allows testing not only JSF-based applications, but any HTML-based applications. So we felt this code may be useful for wider web development community as a separate project.

       

      The module for testing OpenFaces is already included into the standard Selenium Inspector distribution, and can be downloaded here. The support of RichFaces and other popular JSF frameworks is going to be added after we release OpenFaces 2.0, and hopefully with your contribution.

       

      Give OpenFaces EAP2 and Selenium Inspector a try and let us know what you think.

      0 Comments Permalink

      New Components

      • Select Boolean Checkbox – an extended version of the standard <h:selectBooleanCheckbox> component that adds tri-state support, customizing checkbox images, and state-dependent styles.

      Enhancements

      • Extended validation framework: added the possibility for annotation-based validation with <o:validateAll> tag.
      • Added client-side API for the Spinner component: getValue/setValue functions.
      • Added client-side API for the InputText and InputTextarea components: getValue/setValue functions.
      • Extended client-side API for TabSet and TabbedPane components: added getTabCount and getPageCount functions respectively.
      • Extended client-side API for TwoListSelection component: added selectAll and unselectAll functions.
      • Added the scrollTime attribute of <o:dayTable> tag, which allows specifying and saving of the DayTable's scroll position.
      • Added a possibility to create custom DayTable event editors using the new <o:customEventEditor> tag.
      • DayTable's EventEditorDialog component is now based on a Window component instead of PopupLayer.
      • Added resource selector to DayTable event editor dialog.
      • Added an ability for customizing styles of the components inside of DayTable event editor dialog.
      • Added support for standard and custom (onshow/onhide) events to the Window component.
      • Added hideByEsc attribute for PopupLayer, Window and Confirmation components, which closes a modal window on pressing the Esc key.
      • Added typingAllowed attribute for DateChooser component to enable scenario where a date should only be selectable from drop-down calendar.

      Resolved Issues

      • Fixed saving of current DayTable's day after form submission and added two-side binding support for the day attribute of <o:dayTable> tag.
      • Fixed "searchField" filter field alignment within table cell under standards compliance rendering mode (in all browsers except IE).
      • Fixed focus handling for modal windows.
      • Fixed a problem with scrolling a DropDownField/SuggestionField located in a draggable PopupLayer.
      • Paddings applied to captionStyle/captionClass of Window/FoldingPanel components don't affect caption buttons anymore.
      • Fixed ClassCastException when using <o:validateRegex> on an input component with converter.
      • Fixed "util.js was loaded twice" error that occurred in some configurations.
      • Fixed indefinite growing of browser window when resizing a side panel in BorderLayoutPanel component.
      • The width and height CSS properties values in percent aren't recalculated for the BorderLayoutPanel component by the browser window resizing.
      • Fixed using the captionStyle attribute of <o:sidePanel> tag in JSP.
      • Fixed rolloverStyle and splitterRolloverStyle attributes functionality in <o:sidePanel> tag.

      Created a New Compatibility Demo

      A new demo was created that demonstrates compatibility of OpenFaces library with RichFaces library. You can browse the demo online, and download the demo source code.

      Extracted Automated Testing Subsystem as a Separate Project

      As part of writing automated tests for OpenFaces components, we've developed a subsystem that simplifies writing automated tests for OpenFaces components and HTML-based applications in general. We figured out that this code may be useful not only for this project, but for other JSF- and other web development projects alike. So we've decided to extract this code into a separate project – Selenium Inspector. There's also an add-on for Selenium Inspector that focuses on testing OpenFaces components which might be helpful if you're writing automated tests for OpenFaces-based applications. This add-on is already included into the standard distribution of Selenium Inspector and it can be downloaded here.

      API Changes

      ComponentChange Description
      BorderLayoutPanelRemoved onblur and onfocus client-side as they are not applicable to BorderLayoutPanel
      DayTableeventBackgroundTransparencyLevel and eventBackgroundIntensityLevel attributes of <o:dayTable> tag have been moved to <o:timetableEvent> tag and renamed tobackgroundTransparencyLevel and backgroundIntensityLevel approproately.
      DayTableRenamed client-side functions previous() and next() to previousDay() and nextDay() appropriately.
      SpinnerThe type of Spinner's minValue, maxValue and step attributes was changed from int to java.lang.Number to allow future support of floating-point numbers.
      TwoListSelectionRenamed attribute allowSorting to sortingAllowed
      TwoListSelectionRenamed attribute allowItemsOrdering to reorderingAllowed
      0 Comments Permalink

      Recent Content

      Subject Author
      Roadmap 17 hours ago by Dmitry Pikhulya Dmitry Pikhulya
      What's New in Nightly Builds 20 hours ago by Natalia Zolochevska Natalia Zolochevska
      Re: Does actionListener work for o:barChartView 21 hours ago by Dmitry Pikhulya Dmitry Pikhulya
      What's New in OpenFaces 2.0 1 day ago by Dmitry Pikhulya Dmitry Pikhulya
      jsf popup 4 days ago by Sachin Mishra Sachin Mishra
      Re: Custom data provider with data table 4 days ago by Dmitry Pikhulya Dmitry Pikhulya
      Migrating from OpenFaces EAP2 1 week ago by Dmitry Pikhulya Dmitry Pikhulya
      OpenFaces 2.0 Released 1 week ago by Dmitry Pikhulya Dmitry Pikhulya
      OpenFaces 2.0 Release Notes 1 week ago by Dmitry Pikhulya Dmitry Pikhulya
      Migrating from QuipuKit 1.6.2 1 week ago by Dmitry Pikhulya Dmitry Pikhulya
      OpenFaces FAQ 1 week ago by Dmitry Pikhulya Dmitry Pikhulya
      Re: Hi guys, I want to know how display a <o:window from a buttom... 2 weeks ago by Juanca Juanca
      OpenFaces Twitter Channel, The Upcoming Release 2 weeks ago by Dmitry Pikhulya Dmitry Pikhulya
      Re: Session expiry does not work perfectly with richfaces libraries 1 month ago by Dmitry Pikhulya Dmitry Pikhulya
      Re: org.openfaces.portlet.OpenFacesPortlet class not found 4 months ago by Dmitry Pikhulya Dmitry Pikhulya
      Issue ss_css2.jar on JBoss 5.1 4 months ago by scarton scarton
      OpenFaces portal build 4 months ago by Sachin Mishra Sachin Mishra
      Re: Compatibility of openfaces with myfaces 5 months ago by Dmitry Pikhulya Dmitry Pikhulya
      seam 2.z + richfaces 3.x + openfaces 5 months ago by carlos carlos
      Re: web.xml compatibility OpenFaces / RichFaces 6 months ago by baste baste
      OpenFaces AJAX-powered JSF components EAP2 Released 7 months ago by Dmitry Staversky Dmitry Staversky
      problem using openfaces2 with spring2.5, tomcat6 7 months ago by VikramjitSingh VikramjitSingh
      OpenFaces EAP2 Release Notes 7 months ago by Dmitry Staversky Dmitry Staversky
      Re: Problem with Tree Table 7 months ago by Carlos Carlos
      Re: Change the log level settings? 7 months ago by Dmitry Pikhulya Dmitry Pikhulya