View Source

h1. ICEfaces 4.0.0 Release Notes

*_November 4th, 2014_*


h2. Contents

* [About This Release|#about]
* [Downloads|#downloads]
* [What's New in 4.0|#notablechanges]
* [Supported Platforms|#supportedplatforms]
* [Known Issues|#knownissues]
* [3rd Party Libraries|#3rdlibs]
* [Support|#support]

h2. About This Release

ICEfaces 4.0 is an official ICEfaces major release.

Release Highlights:
* 25 new integrated ICEfaces Mobile Components (MOBI), including Native device support via [BridgeIt|].
* 9 new, and 30 enhanced ACE Components.
* 4 new ICECORE components, with additional JavaScript APIs for ICEfaces bridge features.
* Targets (and requires) JSF 2.2 and supports features such as HTML5 pass-through attributes, f:ajax reset, etc.
* Enhanced ICEpush library, now supports Cloud-Push capabilities.
* Use of the Mandatory Resource Configuration scheme for dynamically loaded components no longer required.
* Extensive updates to the ICEfaces Showcase sample application, including new ICECORE and Mobile Components demos.
* Over 300 bugs fixed!

h2. Downloads
ICEfaces is available for download in the following formats:

* [Binary and Source-code Bundles|]
* [ICEsoft Maven Repository|] and [Maven Central Repository|]
* [Subversion Source-code Repository|]

h2. What's New in 4.0?

h4. Compatibility

ICEfaces 4.0 is a major version release and as such adds, removes, and changes a significant number of features and APIs.

The most significant change is that the legacy ICE (Compat) components have not been brought forward into the 4.0 release. Most of these components rely on an earlier ICEfaces Direct-to-DOM rendering technique that isn't compatible with many newer JSF features, such as partial-page rendering (f:ajax). Rather than invest the engineering resources to bring these up to spec for JSF 2.2, we decided to focus our energies on further evolving the newer ACE and MOBI components. Existing applications that use those components will need to be migrated to use the ACE and/or MOBI components.

Existing ICEfaces applications will need some degree of adaptation to work correctly with this release, the scope of which will depend on the specific features and components that they leverage from prior ICEfaces releases.

{tip}See the [ICEfaces 3 to 4 Migration Guide] Wiki for more information.{tip}

h4. ACE Components

{tip}See the [ACE Components Wiki|] for reference documentation on these components.{tip}

* Reduced JavaScript resource footprint and optimization, only loads the resources you need for the components you are using.

*New Components:*

* ace:audioPlayer
* ace:buttonGroup
* ace:dynamicResource
* ace:growlMessages
* ace:graphicImage
* ace:qrcode
* ace:radioButton
* ace:splitPane
* ace:videoPlayer

*Enhanced Components:*

* ace:accordion
** Removed previously deprecated attributes "cache", and "dynamic".

* ace:ajax
** Support for JSF 2.2 "resetValues"
** To better align with standard JSF 2.2 f:ajax and client event behaviors, the following changes have been made:
*** The default "execute" value has been changed to "@this", instead of "@all".
*** Changed the default client event to "valueChange" for the following Input components: ace:autoCompleteEntry, ace:richTextEntry, ace:textAreaEntry, ace:textEntry.
*** The default ajax event for the following Action components has been changed to 'action' (instead of 'activate'). The "activate" event will continue to function as an alias to the new "action" event for backwards compatibility: ace:checkboxButton, ace:dataExporter, ace:linkButton, ace:menuItem, ace:printer, ace:pushButton, ace:radioButton.
*** Changed the default execute scope to "@this" instead of "@all" for the following components/events: ace:linkButton/action, ace:maskedEntry/valueChange, ace:menuItem/action, ace:printer/action, ace:pushButton/action, ace:radioButton/action, ace:autoCompleteEntry, ace:richTextEntry, ace:menuItem.
** The ACE Component TLD documentation now includes the default execution and rendering scope for each client event, as well as the default client event for each component.

* ace:animation
** Removed the previously deprecated attribute "run".

* ace:autoCompleteEntry
** Added HTML5 'placeholder' attribute support

* ace:chart
** Now supports exporting the chart image to the server.
** Added new "varyBarColor" attribute to allow bars of different colors within the same series.
** Added new "barWidth" attribute.

* ace:comboBox
** Now supports any values of any type (not just Strings)
** Added support for adding input elements to the row facet
** Added HTML5 'placeholder' attribute support

* ace:confirmationDialog
** Added new 'dragHandle' and 'style' attributes

* ace:contextMenu
** Added ace:delegate support to ace:contextMenu for use in dataTables, UIData components

* ace:dataTable
** Now automatically maintains header and body column hierarchy when defined by ace:columnGroup.
** Row selection can now optionally occur when the user clicks anywhere in a row, including over an input component, via the new "allColumnClicks" attribute.
** Added new "rowClick" and "rowDblClick" ace:ajax events.
** Now supports PgUp/PgDwn keyboard navigation when pagination is enabled.
** Now supports using localized text in the paginatorTemplate.
** New "ice.ace.instance" JavaScript API client instance lookup mechanism for ace:dataTable.
** Removed the paginator's dependency on the YUI library (reduces resource requirements).
** Rendering performance has been improved via improved techniques for dynamically updated CSS.
** Removed the previously deprecated "height" and "liveScroll" attributes.

* ace:dataExporter
** Now supports exporting summary rows defined in an ace:row tag

* ace:dateTimeEntry
** Now supports localisation via standard Java faces-config.xml, supported-locale and default-locale entries, and provides a way of populating the JavaScript locale structures based off of the Java server-side DateFormatSymbols.

* ace:dialog
** Added new "header" facet which can optionally contain any other arbitrary set of components.
** Added a 'style' attribute.

* ace:fileEntry
** Now supports multiple-file uploads.
** New "autoUpload" boolean attribute to optionally automatically initiate an upload once a user selects a file.
** New "messagePersistence" attribute to control whether fileEntry message(s) are cleared after each upload attempt.

* ace:gMap
** Decoding of this component's state has been normalized to decode in the Apply Request Values phase to better align with standard JSF practices (previously decoding was done in the Render Response phase).
** Use JSONBuilder for rendering scripts in ace:gMap components.

* ace:list
** New 'dragHandle' attribute supports specifying a custom dragHandle region in the component which can be used to move the component by the user.

* ace:menu
** Added support for using ace:multiColumnSubmenu within ace:menu.

* ace:menuItem
** Added new 'urlEncoding' and 'urlParameters' attributes which provide support for 'resource', 'action', 'partialaction', 'bookmarkable', 'redirect', and 'none' URL encodings.
** Added support for the f:setPropertyActionListener tag.

* ace:message(s)
** Now supports animated transition effects via the new "initEffect" and "transitionEffect" attributes.

* ace:multiColumnSubmenu
** Added support for optional "header" and "footer" facets.

* ace:panel
** New 'disableInputs' boolean attribute which provides a convenient way to dynamically disable all input fields contained within the panel.

* ace:pushButton
** No longer requires or supports the YUI CSS style classes.

* ace:richTextEntry
** New "blur" client event
** Now leverages CKeditor v4.3.
*** With this upgrade the custom styling skin names have changed. See the [Wiki topic|RichTextEntry] for details.

* ace:rowEditor
** Added support for reverting user edits when clicking the 'X' button (previously the 'X' button would leave edit mode, but not revert the edits).

* ace:selectMenu
** Now supports any values of any type (not just Strings)
** Added new "direction" attribute to indicate the desired direction (up/down) to present the popup list relative to the input field.
** The popup list will now automatically display either above or below the input field, depending on the available space in the window, unless the "direction" attribute is specified.

* ace:submitMonitor
** Supports multiple ace:submitMonitors being activated during a single submit.
** Added support for ace:fileEntry

* ace:tableConfigPanel
** New "Restore Defaults" convenience button.
** Support for keeping stacked columns together when columns are moved, hidden, etc.
** Now supports localizable label text.
** Added new "show()" JavaScript API to open the tableConfigPanel dynamically via client-side JavaScript.

* ace:textEntry
** Now supports password entry via the new "secret" attribute.
** Added HTML5 'placeholder' attribute support.

* ace:textAreaEntry
** Added HTML5 'placeholder' attribute support.

* ace:tree
** New 'dragHandle' attribute supports specifying a custom dragHandle region in the component which can be used to move the component by the user.
** Removed a dependency on the apache commons-collections library.

* Themes
** Sample ACE ThemeRoller theme jars are now accessible via the ICEsoft Maven 2 [repository|].

* 3rd Party JavaScript Libraries
** Update jQuery to v1.11
** Update CKEditor library to
** See the icefaces/lib/versions-licenses.html [file|] in the release bundle for details on all included libraries.

h4. New Mobile (MOBI) Components

{tip}See the [MOBI Components Wiki|] for reference documentation on these components.{tip}

* mobi:dataView, dataViewColumn(s), and dataViewDetails
* mobi:dateSpinner
* mobi:deviceResource
* mobi:fieldSetGroup and mobi:fieldSetRow
* mobi:flipSwitch
* mobi:geolocation
* mobi:outputList, outputListItem, and outputListItems
* mobi:pagePanel
* mobi:timeSpinner
* mobi:viewManager and mobi:view

* New MOBI Native ([BridgeIt|]) Components

The MOBI Native components leverage the BridgeIt utility app. to provide access to native mobile-device features to ICEfaces web-applications.

** mobi:augmentedReality (preview status)
** mobi:camera
** mobi:camcorder
** mobi:cloudPush
** mobi:fetchContact
** mobi:geoTrack
** mobi:microphone
** mobi:scan
** mobi:sms
** mobi:thumbnail

h4. ICEfaces Framework

*ICEfaces Core (ICECORE) Components*

{tip}See the [CORE Components Wiki|] for reference documentation on these components.{tip}

* New icecore:focusManager
* New icecore:loadBundle
* New icecore:idleMonitor
* New icecore:jsEventListener

*Core Framework*

{tip}See the ICEfaces [Core Framework Wiki|] for details on the topics listed below.{tip}

* New "org.icefaces.redirectOnExceptionMapping" configuration parameter to support redirecting users to specific pages for different exception types.
* Added support for the "sessionExpiredRedirectURI" config param.
* Added ability to configure the base path of an application.
* The 'org.icefaces.generateHeadUpdate' configuration is now "true" by default. This supports loading component resources into the HEAD of the page dynamically, thus removing the requirement to use mandatoryResource Configuration to pre-load component resources.)
* New client-side JavaScript API for user-inactivity detection (can be used with or without the icecore:idleMonitor tag).
* New client-side pending session-timeout warning event and dialog.
* New ability to specify "load only" dependency configuration for resources in application resource-dependency.xml file.
* Support for JSF 2.2 f:ajax resetValues.
* Support for HTML5 pass-thru attributes.
* Support resource coalescing in portlet environments.
* Added optional support for JSF Parameter Namespacing.
** Primarily used for Portlets at this time, requires Mojarra JSF 2.2.7+ and Liferay 6.2+, and associated LiferayFacesBridge.
* Enhanced PortableRenderer and supporting classes to allow push group registration and de-registration of views associated with the current session.
* The faces-config.xml resources have been named to allow ordering of resources.
* Improved the performance of client-side component resources cleanup via pre-determination of resources requiring cleanup on the server during DOM processing.

h4. ICEpush

{tip}See the [ICEpush Wiki|] for details on the topics listed below.{tip}

* ICEpush now leverages HTML5 browser local-storage for inter tab/window communication, instead of cookies.
* New Cloud Push [JavaScript API|].
* Now supports a configurable push delivery time-window that results in push updates being delivered within a window of time. This provides the ability to tune update frequency to moderate server load and improve application responsiveness.
* Added new callback listeners to NotificationProviders and the BlockingConnectionServer.
* New [configuration parameters|] to tune push-storm detection ("org.icepush.notificationStormLoopInterval" and "org.icepush.notificationStormMaximumRequests").
* Initialization of the ICEpush blocking connection now occurs after the document is completely loaded to avoid possible interference with JavaScript component loading and initialization.

h4. Samples

* ICEfaces Desktop & Mobile Showcase
** Enhanced Desktop Showcase
*** Includes demos for all ACE and ICECORE components, grouped by component type.
*** Now supports searching for demos based on partial component name, description text, or "common" alternative names.
*** Now uses partial-page rendering when navigating to each demo for increased responsiveness.
*** Each individual demo is now bookmarkable and can be navigated to directly via its URL.
** New Mobile Showcase
*** A new Mobile Showcase page has been added to demonstrate the new MOBI adaptive-layout containers and components.
*** This sample is best viewed on a mobile device, but HTML5-desktop browsers can also be used.
*** Note that the MOBI "Native" components require the BridgeIt mobile app. to function, thus, may only be used on a supported mobile device.

* Auction Monitor
** The compat/auction-monitor sample has been removed from this release as it relied on the ICE components, which are no longer supported.

h4. IDE Support

* ICEfaces 4 does not require specialized IDE integration bundles, but rather can be used directly with leading JSF 2.2-supporting IDEs.
* New IDE tutorials are available to explain the steps required to configure your NetBeans 8.x or Eclipse 4.4 IDE projects for ICEfaces 4.0: [IDE Tutorials for NetBeans and Eclipse|]

*JSF Runtimes*

* Mojarra JSF has been updated to v2.2.7 in this release.
* MyFaces JSF has been updated to 2.2.5 in this release.

{tip:title=Change Log}For a complete list of all changes in this release, see the related JIRA [Change Log|].{tip}


h2. Supported Platforms
h3. JSF Runtimes

* Oracle Mojarra JSF 2.2.1-2.2.7 (2.2.7 included). Note that 2.2.8 is not supported in this release (see [ICE-10335|] for details).
* Apache MyFaces JSF 2.2.x (2.2.5 included)

h3. Java VM

* Java 6 (1.6)+

h3. Browsers

* Chrome 38
* Firefox 33
* IE 8 - 11 (MOBI Components require IE10+)
* Safari 7, 8

h4. Mobile Browsers

* Apple iOS 7.x, 8.x (Safari)
* Google Android 4.x, 5.x (Chrome)
* Microsoft Windows 8 Phone (IE)

h3. Application Servers

* Apache Tomcat 7, 8
* Oracle Glassfish 4
* RedHat WildFly (JBoss) 8
* Possible to use with older none EE7 servers if JSF 2.2 libraries can be configured.

h3. Portal Containers

* Liferay Portal 6.2

h2. Known Issues
The following section describes the most commonly encountered known issues with this release:

h4. General

* Client state saving mode is not supported by ICEfaces - it is required to use SERVER state saving mode.
* It is required to specify "h:head" and "h:body" tags in your ICEfaces application pages.
* Applications must avoid the use of "javascript: void(0)" in browser DOM event handlers as this technique causes the "onBeforeOnload" event handler to be called in IE, which results in the ICEfaces bridges shutting down (thinking that the page is being navigated away from).

h4. deltaSubmit

* The following standard "h:" components are not supported by the deltaSubmit feature (due to a problematic rendering technique that they utilize):
** h:selectOneMenu
** h:selectManyMenu
** h:selectOneListbox
** h:selectManyListbox
* The work-around is to use similar alternative components instead, such as ace:simpleSelectOneMenu, or ace:list.

h4. ICEpush
* ICEpush (icepush.jar) asynchronous update support is limited to a single ICEfaces application per host-name/server.
** Viewing multiple ICEfaces applications in the same browser from the same host server concurrently will result in only one of the applications having functional push capabilities.
** Support for pushing asynchronous updates to multiple ICEfaces applications from the same server/host-name requires the use of the [Enterprise Push Server|] (EPS), which is included in [ICEfaces EE|] (Enterprise Edition).
** This is necessary because the browser cannot support multiple concurrent push connections, so all push traffic must be multiplexed at a single point on the server.

h4. JSF Runtimes

* This release _requires_ JSF 2.2+. JSF 2.1 runtimes are not supported.
* Note that Mojarra JSF 2.2.8 is not supported in this release (see [ICE-10335|] for details). JSF 2.2.7 is the latest Mojarra release certified with ICEfaces 4.0.

h4. Browsers

* The following features rely on HTML5 support in the browser, and are not supported on IE8 or IE9:
** All MOBI components
** icecore:navigationNotifier
** ace:audioPlayer and ace:videoPlayer
** ace:textEntry "secret" mode is not supported on IE8.

h4. Sample Applications

* Many of the Desktop Showcase ACE demo .xhtml source files erroneously contain the following extraneous namespace declaration: xmlns:ice="". This will cause no problems in terms of execution, however, many IDEs will flag this as a warning when the namespace cannot be resolved. Workaround is to ignore the warnings or remove the entries - this will addressed in the next release.

h2. 3rd Party Libraries

The license and version information for all required/included 3rd Party libraries for this release is available [here|].

h2. Support
Open source community support is available at [].

The [ICEfaces Community Forums|] are available for questions, comments, or general discussions regarding ICEfaces.

Commercial [support agreements|] are also available.