ICEfaces 3.0.0.RC1 Release Notes
December 5th, 2011

Contents
These Release Notes include the following sections:
About This Release
ICEfaces 2.1 is now ICEfaces 3.0!
Due to the extent and nature of the changes introduced in the release, the ICEfaces 2.1 release has been recast as ICEfaces 3.0. This change is driven by the large amount of additional functionality provided by the new ACE components, as well as the by the substantial ACE Component API changes that break backwards-compatibilty with the ICEfaces 2.0 versions.
ICEfaces 3.0 RC1 is a release-candidate preview build of ICEfaces 3. While substantial testing and verification has occurred against this release, serious bugs may still exist and thus it is not recommended for production use.
Downloads
ICEfaces is available for download in the following formats:
Notable Changes in this Release
In addition to the notable changes listed below this release features substantial stability improvements across the product.
- ace:ajax
- Comprehensive support for using the <ace:ajax> component in conjunction with the ACE components to configure the ajax-submit, execution, and rendering behavior the events emmitted by each component has been added in this release.
- Each component now supports synthetic client events that can be trapped and submitted with configuration, or trapped and routed to a client-side JavaScript event handler, etc.
- See the ace:ajax Wiki topic for details.
- The following component attributes have been renamed to better align with standard JSF ajax naming conventions:
- 'process' is now 'execute'
- 'update' is now 'render'
- NOTE: Applications using the old attributes will need to be updated.
- 'singleSubmit' Attribute Removal
- The 'singleSubmit' attribute has been removed from the ACE components in preference for using the new <ace:ajax> component. The <ace:ajax> approach provides a more flexible and standards compliant approach to ajax-submit, execution, and rendering configuration.
- The following components are affected:
- 'ace:checkboxButton'
- 'ace:linkButton'
- 'ace:pushButton'
- 'ace:sliderEntry'
- 'ace:tabSet'
- NOTE: Applications previously using the 'singleSubmit' attribute will need to be updated to adopt the <ace:ajax event="xxx" execute="@this" render="@all"> equivilent.
- ace:dataTable
- The following component attributes have been removed:
- 'update'
- 'onRowSelectUpdate'
- 'onRowUnselectUpdate'
- 'onRowEditUpdate'
- Ajax submit, execution, and rendering behavior for ace:dataTable is now done in a manner consistent with all other ACE components, which is to use an embedded <ace:ajax> tag in the component.
- Example:
<ace:ajax event="select" execute="@this" render="@this selectForm:status" />
- In addition, the following component attributes related to rowEditor events have been moved from ace:dataTable to ace:rowEditor:
- 'rowEditListener'
- 'rowEditCancelListener'
- NOTE: Applications using these attribute will need to be modified to use the new nested <ace:ajax> technique instead.
- ace:dialog
- Can now autosize itself based on the size of the contained content (with limitations).
- ace:expansionToggler
- A new "changeListener" attribute is available specifying a changeListener to receive notifications whenever the the component is expanded or collapsed.
- ace:menuItem
- The following component attributes have been removed:
- 'ajax'
- 'process'
- 'update'
- Ajax submit, execution, and rendering behavior for menuItems is now done in the same manner as for any other ACE component, which is to use an embedded <ace:ajax> tag in the component.
- NOTE: Applications using these attribute will need to be modified to use the new nested <ace:ajax> technique instead.
- ace:progressBar
- The 'ajax' attribute on this component has been renamed 'usePolling' to avoid confusion with the standard 'ajax' attribute use in the <ace/f:ajax> components.
- Note: Applications using this attribute will need to be updated to use the new attribute name.
- ace:rowEditor
- The following events have been moved from ace:dataTable to ace:rowEditor:
- 'rowEditListener'
- 'rowEditCancelListener'
- ace:tabPane
- The following component attributes have been removed in this release:
- 'cacheOnClient'
- 'cacheStatically'
- In their place, a new 'cache' attribute has been added which is used to configure the cache behavior of the tabPane. See the http://wiki.icefaces.org/display/ICE/TabSet documentation for details.
- NOTE: Applications using these attributes will need to be modified to use the new 'cache' attribute instead.
ICEfaces Components
- ice:dataExporter
- The ice:dataExporter component has been re-implemented to resolve the following issues:
- Now possible to reset the dataExporter after an export to ensure that the current dataTable data will be used upon subsequent exports.
- No longer requires multiple clicks from the user to proceed with a download in none-IE browsers.
- No longer creates an empty export file in the constructor of the base OutputTypeHandler which avoids the possibilty of collecting numerous empty files during the user-session.
- ice:menuPopup
- A new "blockMenuOnInput" attribute has been added that can be used to prevent the popup menu from being triggered when the context-menu button is clicked over an input component.
- ice:panelPositioned
- A new "beforeChangeListener" attribute has been added to support the ability to cancel a drop event, thus preventing the item from being re-positioned.
Core Framework
- mandatoryResourceConfiguration
- It is now possible to configure the mandatoryResourceConfiguration by specifying the ACE component tag name.
- Example:
<icecore:config mandatoryResource="tabSet tabPane fileEntry"/>
- Configuration is also still supported via the fully-qualified component class-name, as in previous releases, but the new tag-name based approach is far simplier to use for most developers.
- The mandatoryResource loading system has been improved to prevent possible multiple load requests for the same resource on the same page, and to improve resource caching behavior by marking each resource URL with a unique identifier that lasts the life of the application scope, thus negating the need to check if the resource has changed on the server.
- New @AllWindowsClosed Annotation
- A new @AllWindowsClosed method annotation has been added that can be used by session-scoped beans that need to be notified when all browser windows for that session are closed. This is useful in cases where the application wants to actively cleanup a user-session upon window close.
- New 'Request.getRemoteHost()' Configuration
- It is now possible to configure ICEfaces to avoid calls to the Request.getRemoteHost() method, which can cause long delays in certain network configurations.
- To disable 'getRemoteHost()' lookups, set the new 'disableRemoteHostLookup' context parameter in the web.xml file as follows:
<context-param>
<param-name>org.icepush.disableRemoteHostLookup</param-name>
<param-value>true</param-value>
</context-param>
- New "icecore" Tag TLD Documentation
- TLD-style documentation for the icecore tags has been added.
ICEpush
- The PushRenderer API has been modified as follows:
- A new 'PushRenderer.getPortableRenderer(ServletContext)' method has been added.
- The 'PushRenderer.getPortableRenderer(FacesContext)' method has been removed. The new method signature that accepts a ServletContext should be used in its place.
JSF Support
- Apache MyFaces
- The MyFaces JSF library included with this release has been updated to "JSF 2.1.3-ice-7517", which is a patched version of MyFaces 2.1.3. The patch increases the maxiumum URL length from the MyFaces standard 256 characters to 1024 characters. This was necessary to prevent resource loading issues when using MyFaces in portal containers. It is anticipated that the patch will be accepted into a future MyFaces official release.
- This release introduces support for using the Apache MyFaces 2.1.3 JSF runtime with the ICEfaces Advanced Components as well as within portal containers.
- Oracle Mojarra JSF
- The Mojarra JSF version included in this release has been updated to JSF 2.1.4.
- Note that Mojarra 2.1.4 introduces a hard depedency on Servlet 3.0 APIs, as a result, it cannot be used on older JEE5 application servers. MyFaces 2.1.3 should be used in on older JEE5 servers instead.
Samples & Tutorials
- ICEfaces Showcase Sample Application
- The new "comp-suite" sample application added in the Beta2 release has been renamed to "ICEfaces Showcase" and is now located under the icefaces/samples/showcase directory.
- The showcase application has been modified to deployable to Tomcat 6. Previously, Tomcat 7 was required.
- The showcase application has been updated to reflect component changes in this release.
- Compat Component Showcase Sample Application Removed
- With the addition of the new ICEfaces Showcase sample application the compat/component-showcase application is now redundant and has been removed.
IDE Integrations
- NetBeans 7.0
- This release provides an updated IDE integration for NetBeans 7.0.1.
- Note: Now requires projects to select the JSF library to use with ICEfaces (Mojarra or MyFaces).
- NOTE: You must update your NetBeans 7 installation with the latest module versions prior to installing the ICEfaces NetBeans integration. See the NetBeans Integration Release Notes for details.
- Eclipse 3.7
- This release provides an updated IDE integration for Eclipse 3.7.
- Features improved design-time renderers for the Advanced Components (ace).
 | Change Log For a complete list of all changes in this release, see the related JIRA Change Log. |
Known Issues
The following section describes the most commonly encountered known issues with this release:
Wiki Documentation
General
- JSPs are not supported by ICEfaces 3 - use Facelets.
- 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).
- The Delta-Submit function does not support cases where an Ajax DOM update in the browser dynamically introduces new form elements into the DOM that were not part of the form when the page was originally loaded. In order to use Delta-Submit successfully all form elements / components must be present on the page at the time the page is loaded.
- Due to an apparent bug in the Sun Mojarra JSF 2 runtime library, component binding is not reliable when used within a View scope.
- The recommended workaround is to use the ICEfaces "Window" or JSF "Session" scopes instead if component-binding is required. Alternatively, applications can be modified to avoid the requirement for using component-binding in View scope by using techniques similar to that used in the Data Paginator demo section of Compatible Component Showcase application. For details, see ICE-5226.
Advanced Components
- ACE component resource files are fully minified or otherwise optimized in this release. These will be optimized to minimize page load times and processing prior to final release.
MyFaces JSF
- URL Length Limit
- MyFaces 2.1.3 enforces a maximum URL length limit of 256 characters. This limit causes problems with some ACE resource URLs when used inside a portlet environment.
- To work-around this issue, ICEfaces 3.0.0.RC1 includes patched MyFaces 2.1.3 libraries that extend the length limit to 1024 characters.
- It is anticipated that this issue will be resolved in a future MyFaces official release.
- ACE Components
- Warning Logs
- When using the ACE Components with MyFaces, MyFaces will generate a substantial number of warning log messages that begin with "WARNING: Unsupported component-family/renderer-type: xxx". These messages are harmless and will not appear in the final product release.
- When running with MyFaces, ace:ajax event listeners that are associated with components that are dynamically loaded after the intial page load will not be fired. A work-around is to ensure the components are included during the initial page load.
- Auction Monitor (w/ MyFaces)
- AuctionMonitor's chat facility is not currently functional with MyFaces due to an issue that results in generated IDs being different in MyFaces than those created by Mojarra.
Mojarra JSF
- This release includes the Mojarra JSF 2.1.4 runtime libraries.
- Mojarra 2.1.4 introduces a hard depedency on Servlet 3.0 APIs, as a result, it cannot be used on older JEE5 application servers. MyFaces 2.1.3 should be used in on older JEE5 servers instead.
- Note that the Mojarra JSF 2.1.0-2.1.2 releases have several serious issues that may impact your project:
- A bug that prevents it from supporting bean-annotation on non-Glassfish 3.1 application servers and servlet containers.
- Several bugs that prevent the IE9 browser from working properly with JSF-ajax operations.
- Partial State Saving bugs that might prevent the use of Partial State Saving in your application.
- This release of ICEfaces includes the Mojarra JSF 2.1.4 release libraries which resolves the known issues noted above.
- When running a JSF application in JSF2 PROJECT_STAGE="Development" mode (which is the default setting for all ICEfaces sample applications), you may see the follow warning appear at the bottom of the page: "Form component needs to have a UIForm in its ancestry.".
- This issue is caused by a bug in Mojarra JSF, a suggested work-around is to set the JSF2 PROJECT_STAGE="Production" in the web.xml file.
Browsers
- WebKit (Safari and Chrome)
- The WebKit-based browsers (Google Chrome and Apple Safari) request content-type "application/xhtml+xml" by default, which is different from virtually all other browsers. In cases where the application page doesn't set the contentType explicitly this can result in these browsers defaulting to a strict XHTML rendering mode, which can cause some unexpected styling and layout issues. In order to have WebKit-based browsers render markup consistently with other browsers, you must specify the content-type in the view tag on each page:
<f:view contentType="text/html">
- See http://jira.icefaces.org/browse/ICE-6138 for more information.
Application Servers
- Tomcat 6.0
- In some cases, when running Tomcat on Windows, undeploying an ICEfaces compatible application (i.e. that includes the icefaces-compat.jar) can cause an exception. See http://jira.icefaces.org/browse/ICE-5222 for additional information about this issue. To prevent this, include a context.xml file with your application that includes the following Context attributes to prevent jar and resource locking:
<Context antiJarLocking="true" antiResourceLocking="true"/>
- Glassfish 3 / JBoss 6, 7 (JEE 6 Platforms)
- It is necessary to have Mojarra JSF 2.1.0-FCS or greater (2.1.4 is recommended) installed. This may require updating the JSF Mojarra runtime libraries in Glassfish 3 or JBoss 6, depending on which JSF version is currently installed.
Sample Applications
- Showcase sample with IE7
- There is a known issue with the ICEfaces Showcase (samples/showcase/showcase) application in this release when run on the IE7 Browser. Clicking between the various demo links on the left-hand menu can result in JavaScript errors occurring in the browser. This is an application issue and will be resolved prior to final release.
Support
Open source community support is available at http://www.icefaces.org.
Please report any issues, questions, or comments regarding this release to the ICEfaces Development Build Feedback forum.
The ICEfaces community forums are available for questions, comments, or general discussions regarding ICEfaces.