If you are migrating from ICEfaces 3.x to ICEfaces 4.1 (4.x) your application 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.
See the ACE Components Wiki for reference documentation on these components.
New Components:
New ACE Client-side Validators
ace:clientValidateRequired
ace:clientValidateLength (min, max, range)
ace:clientValidateDecimal
ace:clientValidateValueRange (min, max, range)
ace:clientValidatePattern
New ace:panelStack, ace:stackPane provides optimized server component-tree and rendering, plus client capabilities
New ace:checkboxButtons component
New ace:radioButtons component
New ace:theme component - Adds ability to set the theme on a per-page basis
Enhanced Components:
ace:autoCompleteEntry
Added HTML5 'placeholder' attribute support
Now supports using objects as values with conversion
ace:column
Added new "sortWhenGrouping" boolean attribute to optionally support unsorted grouping of dataTable column values
Added new "hideSortControls" attribute to hide sortControls when sorting is enabled on a column
Added new "displayPriority" attribute to enable responsive column display for desktop/mobile platforms
Sort controls can now be activated with the keyboard
ace:checkboxButton
Checkbox button is now toggled when an associated label or outputLabel is clicked.
ace:comboBox
Added support for "noSelectionOption"
Now automatically sizes its width based on its contents
ace:dataTable
Added robust "liveScroll" capabilities
Added support for responsive column display for desktop/mobile platforms via the new 'displayPriority' attribute in ace:column.
Now supports less-than, greater-than, and value-range based filtering of column data
Added "selectAllRows()", "deselectAllRows()", "selectAllCells()" and "deselectAllCells()" client-side JavaScript functions.
Improved paginator keyboard navigation support
Added a new CSS style/state for when hovering the mouse over a previously selected row
Added new 'caption' attribute
Replaced the "widgetVar" client JS object reference with the "ice.ace.instance()" API introduced in 4.0.
ace:dateTimeEntry
Added new "minDateTime" and "maxDateTime" attributes
Replaced the "widgetVar" client JS object reference with the "ice.ace.instance()" API introduced in 4.0.
ace:dialog
The "close" client-event is now called when the user closes the dialog by pressing the escape key.
ace:gMap
New actionEvent is fired when a gMapEvent is triggered
Now supports using multiple subcomponents concurrently
Added 'disabled' attribute to ace:gMapEvent
ace:growlMessages
Added a new "@inView" option to the "for" attribute to only display FacesMessages for components that are currently rendere in the current view.
ace:linkButton
Added new "type='clear'" attribute that performs a client-side clear of all form components, including ACE and MOBI comps.
ace:message(s)
Added a new "@inView" option to the "for" attribute to only display FacesMessages for components that are currently rendere in the current view.
ace:panel
New "isClosed()" JavaScript API has been added.
Added "headerAlign" attribute to support automatic alignment of header text (left/center/right).
ace:progressBar
Added support for "indeterminate" mode
Replaced the "widgetVar" client JS object reference with the "ice.ace.instance()" API introduced in 4.0.
ace:pushButton
Added new "type='clear'" attribute that performs a client-side clear of all form components, including ACE and MOBI comps.
Added more padding to default styling
ace:selectMenu
Added support for "noSelectionOption"
Now automatically sizes its width based on its contents
ace:sliderEntry
Added "label" and "labelPosition" attributes
ace:simpleSelectMenu
Added support for "noSelectionOption"
Now supports using non-SelectItem list types
ace:subMenu
Now automatically sets its width depending on its contents
Added new "actionListener" and "onClick" attributes
Added new "action" client event.
ace:submitMonitor
Now supports "order of precedence" when multiple overlapping ace:submitMonitors are defined.
ace:tableConfigPanel
Improved keyboard navigation support
ace:textEntry
Added new "charCount" client event
ace:textAreaEntry
New 'readonly' and 'disabled' attributes
Added new "charCount" client event
ace:themeSelect
Added "label" and "labelPosition" attributes
ace:tooltip
Added new 'delegateDisplayListener' attribute, which works like displayListener, but takes an argument of type TooltipDelegateDisplayEvent. This event object has a cancelDisplay() method that can be invoked to prevent the tooltip from being displayed, which enables per-row determination if a tooltip should be displayed or not.
ace:tree
Replaced the "widgetVar" client JS object reference with the "ice.ace.instance()" API introduced in 4.0.
General Improvements
Improved handling of HTML5 passthrough attributes.
The integrated "label" rendering in the ACE input components now renders in the browser as an HTML
Themes
Increase height of background imaged for active and hover states in Sam theme
3rd Party JavaScript Libraries
Updated CKEditor library to 4.3
See the icefaces/lib/versions-licenses.html file in the release bundle for details on all included libraries.
The ICEfaces Showcase has been refactored to remove a dependency on the Apache commons-collections.jar. This library is no longer included with the ICEfaces distribution, other than in the MyFaces JSF runtime as it is a dependency of MyFaces.
Note that we do not believe this exploit was possible given the manner in which the Showcase was using the library, but this step was taken as usage of the library was minimal and we belive in minimizing unnecessary dependencies whenever feasible.
All-New "Emporium" Sample Application
This new sample application demonstrates best practices using ACE component features and ICEpush in a simulated online auction marketplace.
Tutorials
The ICEfaces 4 Tutorials Wiki pages have been updated and refreshed.
ICEfaces 4 does not require specialized IDE integration bundles, but rather can be used directly with leading JSF 2.2-supporting IDEs.
IDE tutorials are available to explain the steps required to configure your NetBeans 8.x or Eclipse 4.4 IDE projects for ICEfaces 4: IDE Tutorials for NetBeans and Eclipse
JSF Runtimes
Mojarra JSF has been updated to v2.2.12 in this release.
MyFaces JSF has been updated to 2.2.8 in this release.
Change Log
For a complete list of all changes in this release, see the related JIRA Change Log.
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).
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.
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.12 is the latest Mojarra release certified with ICEfaces 4.1.
Liferay Portal is not supported with ICEfaces 4.1 at the time of its release do to a conflict with the Liferay Faces Bridge. We expect this to be resolved soon.