Documentation‎ > ‎

What's New in Nightly Builds

This document summarizes the changes that haven't been released yet, but are already available in the nightly builds. Please note that we're updating this document when pushing the appropriate changes to Git, so you might need to wait for the nearest successful nightly build to see the recent changes added to this document. You can also follow the OpenFaces_JSF Twitter channel to receive notifications on the most notable new features as they are being implemented.

The nightly builds are usually published by 5:00am GMT+0 if successful.

IMPORTANT: Please note the API Changes section in the end of the document if you're upgrading from an older version.  


Detecting Nightly Build Version

You can detect OpenFaces version which includes the build number by the name of the openfaces-xxx.jar file name that is located in the nightly build archive. For example file name openfaces-3.1.EA1.651 means a OpenFaces version 3.1.EA1.651. If you have renamed the file for some reason, you can always see the version in the openfaces.jar/META-INF/manifest.mf file –  see the Implementation-Version field (or the Build-Label field for older versions).

Browsing the Pre-release Documentation On-line

The raw source for the unreleased documentation included in the nightly builds can be browsed on-line here: http://wiki.openfaces.org/display/OF/Documentation

New Components

  • SelectOneMenu -- an extended version of the standard SelectOneMenu component with autocompletion support.
  • FileUpload -- a pair of components for file upload (<o:singleFileUpload> and <o:multipleFileUpload> tags). Includes upload progress indication, drag&drop based file upload, in-place and popup modes, and many other features and customizations.
  • LevelIndicator -- a component that shows a numeric value in graphic style, similar to the LED volume meter and resource meter used in Windows Task Manager.
  • KeepVisible -- a component that can be attached to an HTML element or a JSF component to prevent it from being scrolled away from the visible page's area when the user scrolls the document.

Enhancements

  • Supported JSF versions: OpenFaces 3.x has now been tested with and supports Mojarra 2.1.11 along with the previously supported Mojarra 2.0.3 version.
  • Ajax framework:
    • Added AjaxRequest class that provides programmatic access for various aspects of OpenFaces Ajax requests.
    • It's now possible to load application-specific data with Ajax requests. See the "Loading Data with Ajax" sections in "Ajax Framework" and "Ajax Component" documentation pages.
    • It's now possible to specify components for reloading programmatically during the Ajax request. See the "The AjaxRequest Class" section in the "Ajax Framework" documentation.
    • The render attribute of <o:ajax> is not required anymore, which simplifies the use cases when performing Ajax request just for loading data from the server.
    • It's now possible to reload components in different forms simultaneously using the "absolute" id syntax, for example render=":form1:out1 :form2:out2".
    • Improved error notification in case of an improper declaration of Ajax action handler method.
    • Added the onsuccess event, which complements the onajaxstart, onajaxend and onerror events in such components as <o:ajax>, <o:commandButton>, <o:commandLink>, etc. It is invoked when an Ajax request completes without errors (OpenFaces 3.x only).
    • Added a new executeRenderedComponents attribute that allows skipping the "execute" lifecycle phases for components specified in the render attribute of such components as <o:ajax>, <o:commandButton>, etc. (version 2.x only, in JSF 2.0 based 3.x version, all executed components should explicitly be specified in the "execute" attribute similar to the standard JSF 2.0 <f:ajax> tag).
  • Chart:
    • Added interactive selection support for charts. It can be enabled by adding the <o:chartSelection> tag <o:chart> tag turns on an ability for interactive chart item selection. This means that a user can select a chart item (sector in pie charts, bar in bar charts, or shape in line charts) by clicking on it, and application developer has an ability to detect the selected item and optionally update the dependent content with Ajax on selection change. By default, chart's context menu have Save and Print menu item included that allows to download chart's image or easily display print dialog in order to print the chart's content.
    • Now it is possible to add custom popups to the charts to allow displaying extended content for each chart item, which can be useful for example when implementing a drill down functionality. Custom item popups can be enabled by specifying the <o:chartPopup> tag as a child of chart view tags. As a container, the ChartPopup lets you place any kind of JSF components inside it to build its content. You can use the "sector" (for pie charts) and "point" (for bar and line charts) request scope variables when defining the child components of<o:chartPopup>  tag to specify the item-dependent content.
    • Implemented built in context menu support. Now it is possible to enable the standard chart context menu to allow performing useful actions on chart, like saving and printing the chart. The context menu support can be turned on by adding the <o:chartMenu> tag inside of the<o:chart> tag. It is possible to customize the content and appearance of the standard menu by customizing the <o:chartMenu> tag's attributes and child tags.
    • Line Area Fill - Line charts has an advanced customization that enables an ability to fill the area below the line with a gradient or a flat color. This functionality can be enabled by adding either <o:gradientLineAreaFill> or <o:solidLineAreaFill> tag as a child of<o:lineChartView> tag. The <o:gradientLineAreaFill> tag is used to fill the area with a gradient from current line's color to the chart's background color.
    • Added support for 3D mode in charts. 3D mode can be turned on/off using enable3D attribute of corresponding chart view tag.
    • Added domain and range markers support for Bar and Line chart types. <o:marker> tag can be added as a child tag to <o:domainMarkers> and <o:rangeMarkers> tags. These tag should be added as a child tags of corresponding chart view tag.
    • It's now possible to customize labels position for Bar and Line chart types.It can be done using defaultLabelsPosition, positiveLabelsPosition and negativeLabelsPosition attributes of <o:barChartView> and <o:lineChartView> tags.
    • It's now possible to turn off gradients in Bar charts using showGradient attribute of <o:barChartView> tag.
    • Added support for bars' gradient customization. Gradient parameters allows customizing how the "shiny" part of the bar gradient is displayed. This is customized with three attributes: g1WhitePosition, g2FullIntensityPosition, g3LightIntensityPosition. These attributes should be specified as numbers in range [0..1], which correspond to the position of the appropriate gradient portion.
    • Added support for shadow customization for both Bar and Pie chart views.
    • Added support for outlines customization for Bar and Line chart types. Use defaultOutlineStyle and outlines attributes of <o:barChartView> or <o:lineChartView> tags.
    • It's now possible to customize line styles for Line chart view using defaultLineStyle or lineStyles attributes of <o:lineChartView> tag.
    • Added axis tick mark customization attributes to <o:chartAxis>, <o:numberAxis>, <o:dateAxis>, and <o:categoryAxis> tags: minorTicksVisible, minorTickCount, tickInsideLength, tickOutsideLength, minortTickInsideLength, minorTickOutsideLength, tickInterval.
    • It's now possible to customize granularity when specifying time series using the new timePeriodPrecision attribute of <o:chart> tag.
    • Added categoryMargin, lowerMargin, upperMargin attributes to <o:categoryAxis> tag.
  • Timetable components:
    • Introduced the timetableEvent field accessible from the event variable of <o:eventAction> tag's onclick event handler.
    • Day switcher now includes a pop-up calendar (shown by clicking on the date), which allows quick transition to an arbitrary date.
  • Command components:
    • Added onajaxstart/onajaxend/onerror events for CommandButton, CommandLink, CaptionButton, MenuItem  and selection tags (<o:singleRowSelection>, <o:multipleNodeSelection>, etc.)
  • DataTable, TreeTable:
    • Introduced the interactive row grouping feature for the DataTable component. See the updated DataTable demo and the Row Grouping documentation section for details.
    • Introduced the automatic summary calculation feature for the DataTable component with support for table/column/group summaries, customizable summary functions, support for custom types, etc. See the Summary Calculation documentation section for details.
    • Added a new hierarchical selection mode for the TreeTable component, which makes it possible to perform bulk node selection by triggering selection on parent nodes.
    • Added API for exporting DataTable's data (only CSV format is supported currently, with an ability to create custom exporters). Just use the export() function on an instance of DataTable in your server action (you can quickly retrieve an instance of DataTable with the new Faces.component() method).
    • Added DataTable content inspection API: getRowCount(DataScope scope)getRowDatas(DataScope sope)extractTableData(DataScope scope).
    • Added autoSaveState attribute to <o:columnResizing> tag for on-the-fly resizing state saving with Ajax (turned on by default).
    • Added autoScrollbars attribute to <o:scrolling> tag that allows automatic hiding of scrollbars when the displayed data entirely fits in the visible area.
    • Added the "minimize height" mode for vertical scrolling in DataTable and TreeTable components. Just set minimizeHeight attribute of <o:scrolling> tag to true, and the table will reduce its height if there are too little rows for scrolling to be activated.
    • The <o:selectAllCheckbox> tag is now able to display an undefined state check-box when only a part of rows are selected.
    • Added more customization attributes to <o:selectAllCheckbox> tag: image customizations, events, etc.
    • Added disabled attribute for <o:checkboxColumn> and <o:selectAllCheckbox> tags.
    • Added rendered attribute to all selection tags to support scenarios where selection kind should be chosen at run-time.
    • Created a new <o:selectRowCheckbox> tag which can be placed in any place of any table's column as an alternative way to control selection in addition to the existing keyboard/mouse support and <o:selectionColumn>.
    • Added the required attribute for <o:singleRowSelection><o:multipleRowSelection><o:singleNodeSelection>, and <o:multipleNodeSelection> tags, which keeps at least one node selected.
    • Added a notion of client-side row key (or node key for TreeTable) values, and extended client-side API with selection methods which work with these values instead of indexes. See the Client-Side API section in DataTable and TreeTable documentation.
    • Added clearSelection() method to TreeTable's client-side API.
    • Added indexVar variable to <o:columns> tag for more flexible implementation of tables with dynamic columns.
    • Added paginationOnSorting attribute for <o:dataTable> tag, which specifies whether the first page is auto-selected when the user changes sorting order or page number stays the same.
    • Added the menuAllowed attribute to <o:column> and all other column tags to control column menu availability on a per-column basis.
    • Added a diagnostic check for the explicit id attribute presence when <o:dataTablePaginatior> resides in table's "above" or "below" facets.
    • Optimized client-side performance for scrollable DataTable/TreeTable components (especially with large number of columns).
    • Optimized performance for column resizing feature, which is much smoother now.
    • Added TreeTable.expandNodePath(TreePath nodeKeyPath) method to simplify a task of expanding a specific node with all of its parent nodes.
    • Added the rawStyleClass attribute for selection tags, such as <o:singleRowSelection> and <o:multipleRowSelection>, which guarantees the CSS class to be applied to the appropriate row elements in the generated HTML, unlike styleClass attribute, whose behavior is browser-dependent. See the updated selection documentation for details.
    • Improved client-side initialization performance for relatively simple DataTable/TreeTable components -- for those that don't have column resizing and scrolling features.
    • Added the onchange event for <o:checkboxColumn> tag.
    • Added unsortedStateAllowed attribute to the <o:treeTable> and <o:dataTable> tags that allows to switch between sorted and unsorted states by clicking on column header or using column menu.
  • DropDownField, SuggestionField:
    • When using the "custom" suggestion mode, there's a new way to load the default full suggestion list in portions in case of big data sets using the new preloadedItemCount, pageSize, and totalItemCount attributes.
    • When using the "custom" suggestion mode, the new cachingAllowed attribute allows disable caching of suggestions, and an up-to-date fresh list will also be requested from the server when the drop-down is shown if this attribute is set to false.
    • Added a new readonly attribute.
    • Improved performance for pages with a lot of DropDownField/SuggestionField components, most notably in IE.
  • SelectManyCheckbox
    • Added multi-column and multi-row layouts.
  • FoldingPanel
    • Added possibility to collapse/expand FoldingPanel by click on caption. To use it set toggleOnCaptionClick attribute to "true".
  • Spinner
    • Added support of required attribute in Spinner component that allow to specify whether Spinner can has empty value or not.
  • TabbedPane
    • Added mirrorTabSet attribute that allows to use second tabset, which is symmetric to the primary one.
  • Other:
    • Added a way to specify dragging containment for <o:window>, <o:popupLayer>, <o:eventEditorDialog>, and <o:confirmation> tags. The new containment attribute accepts the following values: "document", "viewport", "containingBlock, and "#clientSideId", where the clientSideId part is an arbitrary client-side element id.
    • Removed requirement for components to be inside of a form (for components that don't require state saving, e.g. Window, TabbedPane, etc.)
    • Added a warning for missing converter in TwoListSelection.
    • Added the Faces.component(String clientId, Class<T> componentClass) utility function to simplify retrieving component instance when you need access to its Java API.
    • Added the autosizing capability for the Window component. Set autosizing attribute of <o:window> to "on" to make Window automatically resize to match its content.
    • It's now possible to specify <f:convertDateTime> tag inside of <o:dateChooser> in addition to the built-in DateChooser's attributes.

Fixes

  • Ajax:
    • Fixed Ajax "execute" functionality when "render" components are located in a different form (applicable to all components with Ajax execute and render attributes).
    • Fixed IllegalArgumentException when using <f:ajax execute="@this"/> in <h:selectOneRadio> (OpenFaces 3.0 only).
    • Fixed the excessive rendering of Ajax result in the <extension> tag on non-OpenFaces Ajax requests (fixes PrimeFaces DataTable filtering problems in presence of OpenFaces).
    • Fixed  "Method getIndex was not found" exception when invoking Ajax actions from inside of <ui:repeat> items.
    • Fixed handling some exception types on Ajax requests in OpenFaces 2.x: IOException and FacesException were not handled properly.
    • Fixed an issue with incorrect Ajax loading of JavaScript libraries under IE 6.0 - IE 8.0  (OpenFaces 3.x only).
    • Fixed ajax for components which are placed inside DataTable and try to render/execute something inside the same table.
  • BorderLayoutPanel:
    • Fixed automatic BorderLayoutPanel resizing when using it as a root component.
    • Fixed "Invalid argument" JavaScript error  in IE when placing BorderLayoutPanel as a top-level component.
  • DataTable, TreeTable:
    • Fixed the missing column resizing behavior when the sub-header row (aka filter row) is hidden with the "display:none" style.
    • Selection functionality shouldn't be applied for the "no data" row.
    • Fixed the problem of non-expanding TreeTable rows in IE quirks mode after adding any CSS styles dynamically.
    • Fix for command components in TreeTables on deep hierarchy levels (2+ level).
    • Fixed using the "subHeader" facet for <o:columns> tag.
    • Fixed an issue with double-height nodes in case of empty node text under IE quirks mode.
    • Fixed java.io.NotSerializableException exception on filterable DataTable/TreeTable components under MyFaces JSF implementation.
    • Fixed "Unsupported binding type: class java.util.ArrayList" exception when binding multiple selection tags to a property of type ArrayList instead of List.
    • Fixed "Unspecified error" in IE when reordering columns.
    • Fixed declaring the resizingState attribute for <o:columnResizing> tag in JSP.
    • Fixed ClassCastException when declaring "header"/"footer" facet without declaring "header"/"footer" facets for columns on a scrollable table.
    • Fixed inability to select DataTable/TreeTable contents for copying to clipboard under IE.
    • Fixed erroneous displaying of "Sort ascending" and "Sort descending" menu items for non-sortable columns.
    • Fixed row heights mismatch when exanding nodes in horizontally-scrollable TreeTables in some cases.
    • Fixed misplaced loading of child rows when expanding nodes in scrollable TreeTable in IE 6/7.
    • Fixed writing column resizing state into a bound property.
    • Fixed not saving collapsed nodes in TreeTable's expansion state.
    • Fixed saving scroll position through the position attribute of <o:scrolling> tag.
    • Fixed unwanted page scrolling in Google Chrome when changing selection with keyboard.
    • Fixed StackOverflowError that was thrown when expanding a node on recursive tree structures with a selected node.
    • Fixed displaying excessive empty space on the right of vertically scrollable tables with autoScrollbars attribute of their <o:scrolling> tag set to true.
    • Fixed focus traversal problems after any DataTable/TreeTable Ajax manipulation (reloading, sorting, filtering, etc.)
    • Fixed displaying excessive &nbsp; entity when rendering dynamic columns.
    • Fixed CompositeFilter exception on tables with selection or check-box columns.
    • Fixed displaying excessive vertical grid line by the right edge of the cell that spans across the whole row.
    • Fixed misaligned column widths between table's header & body sections in some scrolling-enabled tables.
    • Fixed some JavaScript memory leaks when reloading DataTable components with Ajax.
    • Fixed disappearing DataTable with paginator under Mojarra 2.0.3 in some cases.
    • Fixed pressing Enter in DataTable paginator's page number field submitting the page instead of performing Ajax action in Chrome and Safari.
    • Fixed DataTable/TreeTable with column resizing which couldn't be used inside of TabbedPane (on any than the initially-visible page).
    • Fixed not being able to use input and action components inside of dynamic columns of DataTable in some cases.
    • Fixed DataTable/TreeTable components not generating their client ids properly when they reside in forms with prependId="false" attribute declaration.
    • Fixed performance drop on DataTables without rowKey attribute, whose row data objects implement Serializable, but not equals/hashCode methods.
    • Fixed non-working DataTable filtering with prependId="false" attribute on the containing form.
    • Fixed non-working DataTable column resizing on some pages with a scrolled window content in Chrome (in non-scrollable tables).
    • Fixed poorly aligned DataTable column resizing handles (the places where the column boundaries dragging is allowed) on some pages (in non-scrollable tables).
    • Fixed an inability to trigger OpenFaces Ajax actions from inside of DataTable/TreeTable dynamic columns.
    • Fixed Chrome crash on TreeTable row collapsing in certain conditions (after hiding/showing TreeTable with horizontal scroll bar and without non-fixed columns).
    • Fixed NPE when binding the rowDatas/nodeDatas attribute of <o:multipleRowSelection>/<o:multipleNodeSelection>/<o:checkboxColumn> tag with a scope-based syntax like "#{sessionScope.someKey}".
    • Fixed the "Error while performing Ajax request: No xml response received -- check server logs." message when Ajax-refreshing the table with some OpenFaces components (due to the erroneously generated nested CDATA elements in the Ajax response).
  • Chart:
    • Fixed actionListener attribute for chart view tags which worked only when the tooltip attribute was declared.
    • Fixed support for EL for all chart-related tags.
    • Made it possible to use Chart component with the "client" state saving mode.
  • DropDownField, SuggestionField:
    • Fixed using the string-to-string converters.
    • Fixed typing comma char in <o:dropDownField> and <o:suggestionField> with suggestionMode="custom".
    • Fixed a broken DropDownField/SuggestionField component after reloading with Ajax under IE quirks mode.
  • Window/PopupLayer:
    • Fixed an issue with <select> elements protruding through Window's modal area.
    • Fixed an issue of empty window content when showing a window with Ajax call.
    • Fixed the "Can't move focus to the control..." JavaScript error when opening a modal window under IE in some cases.
    • Fixed an inability to specify draggable="false" for the Window component.
    • Fixed a problem when attempting to drag a scroll-bar in a Window/PopupLayer with its draggableByContent attribute set to true.
    • Fixed the behavior of nested modal Window/PopupLayer components.
    • Fixed the problem where modal Window/PopupLayer components didn't disable the background actions on the entire window area under IE and FireFox in some page layouts.
    • Fixed the "Parameters: Invalid chunk ignored" log warning when performing Ajax submit of the form with <o:popupLayer> tag (OpenFaces 3.x only).
  • PopupMenu:
    • Fixed attaching PopupMenu to FoldingPanel.
    • Fixed PopupMenu showing partially out of visible area when clicking near the edge of the page.
    • Fixed JavaScript error when placing comment nodes inside of <o:popupMenu> tag.
  • DayTable:
    • Fixed improper DaySwitcher formatting for some locales such as "es".
    • Fixed onhide event for <o:eventEditorDialog> tag.
  • TreeTable
    • Fixed improper node collapsing behavior when node expansion is intermixed with Ajax requests (OF-192).
  • Other:
    • Fixed the "default.css file is not loaded" error which appeared in some cases when using OpenFaces 3.0.
    • Fixed client validation for required fields with a prompt text.
    • Solved excessive "enclosing form cannot be found for component" log warnings when using <rich:tabPanel> with OpenFaces client validation enabled.
    • Fixed adding the util-2.x.js file to the pages without OpenFaces components/functionality, though it can still be included on such pages by setting the org.openfaces.forceIncludingUtilJs init parameter if you'd like to have the O$ function on such pages (see the Common Concepts documentation section).
    • Fixed "java.lang.InstantiationException: java.util.Arrays$ArrayList" exception during state restoring in some configurations.
    • Specifying disabled images for image-based SelectManyCheckbox is now optional.
    • Fixed using converter for <o:inputText> component.
    • Fixed improper handling of commas in TwoListSelection values.
    • Fixed a rare ConcurrentModificationException when using the Calendar component.
    • Fixed improper <o:commandButton> action execution in IE 6 when buttons display HTML content.
    • Fixed NullPointerException in MultiPageContainer (applicable for TabbedPane and LayeredPane).
    • Fixed the client-side setSelected method in combination with tri-state mode.
    • Fixed improper Mozilla Firefox version detection, which caused some issues in Firefox 5.
    • Fixed JavaScript error when clicking on a page after a popup component (such as DropDownField) was removed from the page with Ajax.
    • Fixed reporting the old state of SelectBooleanCheckbox in client-side onclick event handler under IE.
    • Fixed the missing type="text" declaration in the rendered HTML of <o:inputText> component.
    • Fixed including OpenFaces version into resource URLs generated by OpenFaces in the presence of Apache Tomahawk, to avoid caching old resources when upgrading the OpenFaces library (OpenFaces 3.x only).
    • Fixed the "Cannot create a session after the response has been committed" error when trying to reach a non-existing JSF page (OpenFaces 2.x only).
    • Fixed prompt text functionality that was broken after reloading <o:inputText> component with Ajax (OpenFaces 3.x only).
    • Fixed the JSON2/Prototype.js conflict (which might cause DataTable sorting not to work in OF 2.x in combination with some RichFaces 3.3.3 components on the page).
    • Fixed an issue of DateChooser's "None" button not being enabled when client validation is disabled.
    • Fixed behavior of Spinner with large numbers, now it has maximum and minimum value: positive and negative number of nineteen 9's.

Other

  • Column menu specified for DataTable or TreeTable components is now not shown for selection and check-box columns by default. If you need the column menu to be available on these columns anyway, you can set the menuAllowed attribute of the appropriate <o:selectionColumn> and/or <o:checkboxColumn> tags to true.
  • The first page is selected when sorting the paginated DataTable by default now. If you'd like to retain the old behavior when page index didn't change during sorting, you should set the DataTable's paginationOnSorting attribute to "samePage".
  • All of dependencies required for OpenFaces were placed in OpenFaces Maven repository (http://repository.openfaces.org/repository), so you don't have to specify additional repositories for dependencies now.
  • Defined the cases when rowKey attribute of <o:dataTable> tag should be used concretely. See the updated Model Row Objects Requirements section in the DataTable developer's guide. The new instructions are backwards-compatible, but it is possible that you'll be able to remove this attribute in some of your tables without changing the functionality.
  • Nightly builds are now available in OpenFaces Maven repository. You can use the 2.x-nightly or 3.x-nightly string in the appropriate <dependency> entry of your Maven build to use the latest OpenFaces 2.x or OpenFaces 3.x nightly build respectively.

API Changes

  • When using OpenFaces 3.x, Ajax action listeners (e.g. the listener attribute in <o:ajax>, actionListener attribute in <o:commandButton> and similar attributes), should now be declared with the javax.faces.event.AjaxBehaviorEvent parameter instead of javax.faces.event.ActionEvent. This was made to make <o:ajax> usage more uniform with the usage of the standard JSF 2.0 <f:ajax> tag, where AjaxBehaviorEvent class is used. If you used the org.openfaces.event.AjaxActionEvent as the type of action listener parameter then no modifications are necessary (this class now extends AjaxBehaviorEvent instead of ActionEvent).
  • Replaced the DataTable's getTotalRowCount() method with a more generic getRowCount(DataScope scope) method. You can just replace your getTotalRowCount() invocations with getRowCount(AbstractTable.DataScope.FILTERED_ROWS).
  • When running OpenFaces 2.x in a portlet environment, you should use the following updated path to the default.css resource file in your portlets (instead of the old one, as described in the "Installation and Configuration" documentation page).
<link rel='stylesheet' type='text/css' href='/<AppName>/META-INF/resources/openfaces/default.css'/>

Comments