<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>TeamDev Support : Document List - OpenFaces</title>
    <link>http://support.teamdev.com/community/openfaces?view=documents</link>
    <description>Latest Documents in OpenFaces</description>
    <language>en</language>
    <pubDate>Tue, 03 Aug 2010 17:32:11 GMT</pubDate>
    <generator>Clearspace 2.5.3 (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2010-08-03T17:32:11Z</dc:date>
    <dc:language>en</dc:language>
    <item>
      <title>What's New in Nightly Builds</title>
      <link>http://support.teamdev.com/docs/DOC-1143</link>
      <description>&lt;!-- [DocumentBodyStart:3485ba94-3b7c-4c9c-8e80-72002ea7ce13] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;div&gt;&lt;p&gt;This document summarizes the changes that haven't been released yet, but are already available in the &lt;a class="jive-link-external-small" href="http://openfaces.org/downloads/"&gt;nightly builds&lt;/a&gt;. Please note that we're updating this document when committing the appropriate changes to SVN, 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 &lt;a class="jive-link-external-small" href="http://twitter.com/OpenFaces_JSF"&gt;OpenFaces_JSF Twitter channel&lt;/a&gt; to receive notifications on the most notable new features as they are being implemented.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;p&gt;The nightly builds are usually published by 5:00am GMT+0 if successful.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Build number is not available on the site yet, though you can find it in &lt;span style="font-family: 'courier new', courier;"&gt;openfaces.jar/META-INF/manifest.mf&lt;/span&gt; file –  see the &lt;span style="font-family: 'courier new', courier;"&gt;Build-Label&lt;/span&gt; field.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1&gt;&lt;span style="font-size: 18pt;"&gt;New Components&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;SelectOneMenu -- an extended version of the standard SelectOneMenu component with autocompletion support.&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;h1&gt;&lt;span style="font-size: 18pt;"&gt;Enhancements&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Ajax framework:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new', courier;"&gt;AjaxRequest&lt;/span&gt; class that provides programmatic aspects for various aspects of OpenFaces Ajax requests.&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;The &lt;span style="font-family: 'courier new', courier;"&gt;render&lt;/span&gt; attribute of &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:ajax&amp;gt;&lt;/span&gt; is not required anymore, which simplifies the use cases when performing Ajax request just for loading data from the server.&lt;/li&gt;&lt;li&gt;Added a new &lt;span style="font-family: 'courier new', courier;"&gt;executeRenderedComponents&lt;/span&gt; attribute that allows skipping the "execute" lifecycle phases for components specified in the &lt;span style="font-family: 'courier new', courier;"&gt;render&lt;/span&gt; attribute of such components as &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:ajax&amp;gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:commandButton&amp;gt;&lt;/span&gt;, etc.&lt;/li&gt;&lt;li&gt;It's now possible to reload components in different forms simultaneously using the "absolute" id syntax, for example &lt;span style="font-family: 'courier new', courier;"&gt;render=":form1:out1 :form2:out2"&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Chart:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added interactive selection support for charts. It can be enabled by adding the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:chartSelection&amp;gt;&lt;/span&gt; tag &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:chart&amp;gt;&lt;/span&gt; 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.&lt;/li&gt;&lt;li&gt;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 &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:chartPopup&amp;gt;&lt;/span&gt; tag as a child of chart view tags. As a container, the &lt;span style="font-family: 'courier new', courier;"&gt;ChartPopup&lt;/span&gt; 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 &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:chartPopup&amp;gt;&lt;/span&gt;  tag to specify the item-dependent content.&lt;/li&gt;&lt;li&gt;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 &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:chartMenu&amp;gt;&lt;/span&gt; tag inside of the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:chart&amp;gt;&lt;/span&gt; tag. It is possible to customize the content and appearance of the standard menu by customizing the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:chartMenu&amp;gt;&lt;/span&gt; tag's attributes and child tags.&lt;/li&gt;&lt;li&gt;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 &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:gradientLineAreaFill&amp;gt;&lt;/span&gt; or &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:solidLineAreaFill&amp;gt;&lt;/span&gt; tag as a child of &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:lineChartView&amp;gt;&lt;/span&gt; tag. The &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:gradientLineAreaFill&amp;gt;&lt;/span&gt; tag is used to fill the area with a gradient from current line's color to the chart's background color.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added support for 3D mode in charts. 3D mode can be turned on/off using &lt;span style="font-family: 'courier new', courier;"&gt;enable3D&lt;/span&gt; attribute of corresponding chart view tag.&lt;/li&gt;&lt;li&gt;Added domain and range markers support for Bar and Line chart types. &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:marker&amp;gt;&lt;/span&gt;&lt;/span&gt; tag can be added as a child tag to &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:domainMarkers&amp;gt;&lt;/span&gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:rangeMarkers&amp;gt;&lt;/span&gt;&lt;/span&gt; tags. These tag should be added as a child tags of corresponding chart view tag.&lt;/li&gt;&lt;li&gt;It's now possible to customize labels position for Bar and Line chart types.It can be done using &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;defaultLabelsPosition&lt;/span&gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;positiveLabelsPosition&lt;/span&gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;negativeLabelsPosition&lt;/span&gt;&lt;/span&gt; attributes of &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:barChartView&amp;gt;&lt;/span&gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:lineChartView&amp;gt;&lt;/span&gt;&lt;/span&gt; tags.&lt;/li&gt;&lt;li&gt;It's now possible to turn off gradients in Bar charts using &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;showGradient&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: 'courier new', courier;"&gt;&lt;/span&gt;attribute of &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:barChartView&amp;gt;&lt;/span&gt;&lt;/span&gt; tag&lt;/li&gt;&lt;li&gt;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: &lt;span style="font-family: 'courier new', courier;"&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;g1WhitePosition&lt;/span&gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;g2FullIntensityPosition&lt;/span&gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;g3LightIntensityPosition&lt;/span&gt;&lt;/span&gt;. These attributes should be specified as numbers in range [0..1], which correspond to the position of the appropriate gradient portion.&lt;/li&gt;&lt;li&gt;Added support for shadow customization for both Bar and Pie chart views.&lt;/li&gt;&lt;li&gt;Added support for outlines customization for Bar and Line chart types. Use &lt;span style="font-family: 'courier new', courier;"&gt;defaultOutlineStyle&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;outlines&lt;/span&gt; attributes of &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:barChartView&amp;gt;&lt;/span&gt; or &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:lineChartView&amp;gt;&lt;/span&gt; tags.&lt;/li&gt;&lt;li&gt;It's now possible to customize line styles for Line chart view using &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;defaultLineStyle&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: 'courier new', courier;"&gt;&lt;/span&gt;or &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;lineStyles&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: 'courier new', courier;"&gt;&lt;/span&gt;attributes of &lt;span style="font-family: 'courier new', courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:lineChartView&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;gt;&lt;/span&gt; tag.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Command components:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new', courier;"&gt;onajaxstart&lt;/span&gt;/&lt;span style="font-family: 'courier new', courier;"&gt;onajaxend&lt;/span&gt;/&lt;span style="font-family: 'courier new', courier;"&gt;onerror&lt;/span&gt; events for CommandButton, CommandLink, CaptionButton, MenuItem  and selection tags (&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:singleRowSelection&amp;gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:multipleNodeSelection&amp;gt;&lt;/span&gt;, etc.)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DataTable and TreeTable:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new', courier;"&gt;disabled&lt;/span&gt; attribute for &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:checkboxColumn&amp;gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:selectAllCheckbox&amp;gt;&lt;/span&gt; tags.&lt;/li&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new', courier;"&gt;autoSaveState&lt;/span&gt; attribute to &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:columnResizing&amp;gt;&lt;/span&gt; tag for on-the-fly resizing state saving with Ajax (turned on by default).&lt;/li&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new', courier;"&gt;autoScrollbars&lt;/span&gt; attribute to &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:scrolling&amp;gt;&lt;/span&gt; tag that allows automatic hiding of scrollbars when the displayed data entirely fits in the visible area.&lt;/li&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new', courier;"&gt;rendered&lt;/span&gt; attribute to all selection tags to support scenarios where selection kind should be chosen at run-time.&lt;/li&gt;&lt;li&gt;Greatly improved performance for DataTable and TreeTable components with scrolling and/or column resizing enabled under Internet Explorer.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class="noindent"&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;h1&gt;&lt;span style="font-size: 18pt;"&gt;Fixes&lt;/span&gt;&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Ajax:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Fixed Ajax "execute" functionality when "render" components are located in a different form (applicable to all components with Ajax &lt;span style="font-family: 'courier new', courier;"&gt;execute&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;render&lt;/span&gt; attributes).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DataTable and TreeTable:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Fixed the missing column resizing behavior when the sub-header row (aka filter row) is hidden with the &lt;span style="font-family: 'courier new', courier;"&gt;"display:none"&lt;/span&gt; style.&lt;/li&gt;&lt;li&gt;Selection functionality shouldn't be applied for the "no data" row.&lt;/li&gt;&lt;li&gt;Fixed the problem of non-expanding TreeTable rows in IE quirks mode after adding any CSS styles dynamically.&lt;/li&gt;&lt;li&gt;Fix for command components in TreeTables on deep hierarchy levels (2+ level).&lt;/li&gt;&lt;li&gt;Fixed using the &lt;span style="font-family: 'courier new', courier;"&gt;"subHeader"&lt;/span&gt; facet for &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:columns&amp;gt;&lt;/span&gt; tag.&lt;/li&gt;&lt;li&gt;Fixed an issue with double-height nodes in case of empty node text under IE quirks mode.&lt;/li&gt;&lt;li&gt;Fixed java.io.NotSerializableException exception on filterable DataTable/TreeTable components under MyFaces JSF implementation.&lt;/li&gt;&lt;li&gt;Fixed "Unsupported binding type: class java.util.ArrayList" exception when binding multiple selection tags to a property of type &lt;span style="font-family: 'courier new', courier;"&gt;ArrayList&lt;/span&gt; instead of &lt;span style="font-family: 'courier new', courier;"&gt;List&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Fixed "Unspecified error" in IE when reordering columns.&lt;/li&gt;&lt;li&gt;Fixed declaring the &lt;span style="font-family: 'courier new', courier;"&gt;resizingState&lt;/span&gt; attribute for &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:columnResizing&amp;gt;&lt;/span&gt; tag in JSP.&lt;/li&gt;&lt;li&gt;Fixed ClassCastException when declaring "header"/"footer" facet without declaring "header"/"footer" facets for columns on a scrollable table.&lt;/li&gt;&lt;li&gt;Fixed inability to select DataTable/TreeTable contents for copying to clipboard under IE.&lt;/li&gt;&lt;li&gt;Fixed erroneous displaying of "Sort ascending" and "Sort descending" menu items for non-sortable columns.&lt;/li&gt;&lt;li&gt;Fixed row heights mismatch when exanding nodes in horizontally-scrollable TreeTables in some cases.&lt;/li&gt;&lt;li&gt;Fixed misplaced loading of child rows when expanding nodes in scrollable TreeTable in IE 6/7.&lt;/li&gt;&lt;li&gt;Fixed writing column resizing state into a bound property.&lt;/li&gt;&lt;li&gt;Fixed not saving collapsed nodes in TreeTable's expansion state.&lt;/li&gt;&lt;li&gt;Fixed error on DataTable with zero-item model and column filters.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Chart:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Fixed &lt;span style="font-family: 'courier new', courier;"&gt;actionListener&lt;/span&gt; attribute for chart view tags which worked only when the &lt;span style="font-family: 'courier new', courier;"&gt;tooltip&lt;/span&gt; attribute was declared.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DropDownField and SuggestionField:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Fixed using the string-to-string converters.&lt;/li&gt;&lt;li&gt;Fixed typing comma char in &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:dropDownField&amp;gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:suggestionField&amp;gt;&lt;/span&gt; with &lt;span style="font-family: 'courier new', courier;"&gt;suggestionMode="custom"&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Window&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Fixed an issue with &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;select&amp;gt;&lt;/span&gt; elements protruding through Window's modal area.&lt;/li&gt;&lt;li&gt;Fixed an issue of empty window content when showing a window with Ajax call.&lt;/li&gt;&lt;li&gt;Fixed the "Can't move focus to the control..." JavaScript error when opening a modal window under IE in some cases.&lt;/li&gt;&lt;li&gt;Fixed an inability to specify &lt;span style="font-family: 'courier new', courier;"&gt;draggable="false"&lt;/span&gt; for the Window component.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Other:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Fixed automatic BorderLayoutPanel resizing when using it as a root component.&lt;/li&gt;&lt;li&gt;Fixed attaching PopupMenu to FoldingPanel.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Fixed client validation for required fields with a prompt text.&lt;/li&gt;&lt;li&gt;Solved excessive "enclosing form cannot be found for component" log warnings when using &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;rich:tabPanel&amp;gt;&lt;/span&gt; with OpenFaces client validation enabled.&lt;/li&gt;&lt;li&gt;Fixed adding the &lt;span style="font-family: 'courier new', courier;"&gt;util-2.x.js&lt;/span&gt; file to the pages without OpenFaces components/functionality, though it can still be included on such pages by setting the &lt;span style="font-family: 'courier new', courier;"&gt;org.openfaces.forceIncludingUtilJs&lt;/span&gt; init parameter if you'd like to have the &lt;span style="font-family: 'courier new', courier;"&gt;O$&lt;/span&gt; function on such pages (see the Common Concepts documentation section).&lt;/li&gt;&lt;li&gt;Fixed "java.lang.InstantiationException: java.util.Arrays$ArrayList" exception during state restoring in some configurations.&lt;/li&gt;&lt;li&gt;Specifying disabled images for image-based SelectManyCheckbox is now optional.&lt;/li&gt;&lt;li&gt;Fixed using converter for &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:inputText&amp;gt;&lt;/span&gt; component.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:3485ba94-3b7c-4c9c-8e80-72002ea7ce13] --&gt;</description>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">openfaces</category>
      <pubDate>Tue, 01 Dec 2009 18:35:16 GMT</pubDate>
      <author>forum-admin@teamdev.com</author>
      <guid>http://support.teamdev.com/docs/DOC-1143</guid>
      <dc:date>2009-12-01T18:35:16Z</dc:date>
      <clearspace:dateToText>1 month, 6 days ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
    </item>
    <item>
      <title>Roadmap</title>
      <link>http://support.teamdev.com/docs/DOC-1107</link>
      <description>&lt;!-- [DocumentBodyStart:06e2299f-eef0-4e63-ab37-a123e765eee4] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;To know when the next version of OpenFaces will come out and what features or components will be available in it, use the OpenFaces roadmap. Note, however, that these are only preliminary plans for future releases and, therefore, they may change over time. Please also note that the roadmap lists only major features of these releases.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you want to see more new features in the OpenFaces roadmap, let us know. Visit our &lt;a class="jive-link-community-small" href="http://support.teamdev.com/community/openfaces" title="OpenFaces is an open-source library of AJAX-powered JSF components, an Ajax framework and a client-side validation framework. OpenFaces is based on the set of JSF components formerly known as QuipuKit library. It contains fully revised codebase of QuipuKit and introduces many new components and features."&gt;forum&lt;/a&gt;, submit requests to our &lt;a class="jive-link-external-small" href="http://requests.openfaces.org"&gt;issue tracking system&lt;/a&gt;&lt;span&gt;, or e-mail us directly at &lt;/span&gt;&lt;a class="jive-link-email-small" href="mailto:info@openfaces.org"&gt;info@openfaces.org&lt;/a&gt;&lt;span&gt;. You can also follow the current development news in &lt;/span&gt;&lt;a class="jive-link-external-small" href="http://twitter.com/OpenFaces_JSF"&gt;OpenFaces twitter&lt;/a&gt;.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;OpenFaces 3.0 Early Access 2 (released&lt;/strong&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;This release is going to have the following modifications since EA1 release:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A part of OpenFaces infrastructure transitioned to JSF 2.0 API instead of old JSF 1.2 ones.&lt;/li&gt;&lt;li&gt;Ajax state handling fixes, which resolves EA1 issues such as Ajax features of DataTable and TreeTable components.&lt;/li&gt;&lt;li&gt;A fix for a conflict with JSF 2.0 Ajax functionality (&lt;a class="jive-link-external-small" href="http://requests.openfaces.org/browse/OF-34"&gt;OF-34&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This version can be downloaded &lt;a class="jive-link-external-small" href="http://openfaces.org/downloads/"&gt;here&lt;/a&gt;. See the &lt;a class="jive-link-blog-small" href="http://support.teamdev.com/community/openfaces/blog/2010/08/03/openfaces-30-ea2-release-notes"&gt;release notes&lt;/a&gt;.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;OpenFaces 3.0 (September)&lt;/strong&gt;&lt;/h3&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;OpenFaces version 3.0 will be maintained in parallel with OpenFaces version 2.0 while there is still interest in JSF 1.2. Both of these versions will have the same set of features but they will be targeted at JSF 2.0 and JSF 1.2 respectively.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;OpenFaces 2.1/3.1&lt;/strong&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li type="ul"&gt;Enhanced SelectOneMenu component.&lt;/li&gt;&lt;li type="ul"&gt;WeekTable component, analogous to DayTable but showing events for a week.&lt;/li&gt;&lt;li type="ul"&gt;MonthTable component, analogous to DayTable but showing events for a month.&lt;/li&gt;&lt;li type="ul"&gt;Timetable component -- displays a schedule of events with multiple views (DayTable/WeekTable/MonthTable components combined).&lt;/li&gt;&lt;li type="ul"&gt;DataTable extensions.&lt;/li&gt;&lt;/ul&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;Future releases&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;MenuBar component.&lt;/li&gt;&lt;li&gt;Panel component.&lt;/li&gt;&lt;li&gt;ProgressBar component.&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Interactive column list customization in DataTable and TreeTable components.&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Add the nodeDataByKey attribute to the TreeTable (similar to rowDataByKey in the DataTable component for enhanced handling of concurrent data modifications).&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Support for displaying a checkbox/selection column with images instead of check boxes.&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Nesting of DataTable/TreeTable inside other DataTable/TreeTable.&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Flexible paginator customization.&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Additional chart types.&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Validation groups.&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Support for IDEs (NetBeans, IBM Rational Application Developer, Sun Java Studio Creator, JDeveloper, etc.).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:06e2299f-eef0-4e63-ab37-a123e765eee4] --&gt;</description>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">datatable</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">demo</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">faq</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">installation</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">popuplayer</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">openfaces</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">samples</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">treetable</category>
      <pubDate>Thu, 23 Apr 2009 16:34:14 GMT</pubDate>
      <author>forum-admin@teamdev.com</author>
      <guid>http://support.teamdev.com/docs/DOC-1107</guid>
      <dc:date>2009-04-23T16:34:14Z</dc:date>
      <clearspace:dateToText>1 month, 6 days ago</clearspace:dateToText>
      <clearspace:replyCount>20</clearspace:replyCount>
    </item>
    <item>
      <title>Migrating from QuipuKit 1.6.2</title>
      <link>http://support.teamdev.com/docs/DOC-1111</link>
      <description>&lt;!-- [DocumentBodyStart:6d0e84ab-d7da-4839-aa28-7d60436b96ff] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;This document describes how to upgrade your application from QuipuKit 1.6.2 to OpenFaces 2.0.&lt;/p&gt;&lt;h1&gt;General&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;OpenFaces 2.0 requires Java version 5 or higher.&lt;/li&gt;&lt;li&gt;OpenFaces 2.0 requires JSF 1.2.x (Mojarra or MyFaces).&lt;/li&gt;&lt;li&gt;As with QuipuKit 1.x, OpenFaces can be used with JSP and Facelets. Though if you are working with Facelets, please ensure that you are using a version 1.1.14 or higher.&lt;/li&gt;&lt;li&gt;Support for Ajax4jsf framework of versions that existed prior to integrating Ajax4jsf into RichFaces has been dropped. Use RichFaces 3.3.0 or later instead of Ajax4jsf.&lt;/li&gt;&lt;li&gt;Support for RichFaces library earlier than version 3.3.0 has been dropped. Upgrade to RichFaces 3.3.0 or later.&lt;/li&gt;&lt;li&gt;Suppor for JBoss Seam framework of versions earlier than 2.0 has been dropped.&lt;/li&gt;&lt;li&gt;OpenFaces 2.0 comes as a single Jar file named &lt;tt&gt;openfaces.jar&lt;/tt&gt; . License jar file that was required for QuipuKit 1.x is not required anymore and should be removed. Other jar dependencies remained the same (see the Installation and Configuration section in OpenFaces Developer's Guide).&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Changes Dependent on the New Product Name&lt;/h1&gt;&lt;p&gt;Since version 2.0 QuipuKit has been renamed to OpenFaces. Hence all of the names that depended on the old product name must be changed. Here's the full list of changes that might require updates in your application:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Renamed the root package from &lt;tt&gt;teamdev.jsf&lt;/tt&gt; to &lt;tt&gt;org.openfaces&lt;/tt&gt;. Therefore you need to update paths to imported packages in your code appropriately. Please also pay special attention to renaming the resource filter class in web.xml from &lt;tt&gt;teamdev.jsf.util.ResourceFilter&lt;/tt&gt; to &lt;tt&gt;org.openfaces.util.ResourceFilter&lt;/tt&gt; . The &lt;tt&gt;teamdev.jsf.portlet.QuipuKitPortlet&lt;/tt&gt; class for configuring portlet applications has also been renamed to &lt;tt&gt;org.openfaces.portlet.OpenFacesPortlet&lt;/tt&gt;.&lt;/li&gt;&lt;li&gt;Changed prefixes of component-type and component-family strings from &lt;tt&gt;teamdev.jsf&lt;/tt&gt; to &lt;tt&gt;org.openfaces&lt;/tt&gt; .&lt;/li&gt;&lt;li&gt;The prefixes for application parameters specified in web.xml file were changed from &lt;tt&gt;teamdev.jsf&lt;/tt&gt; to &lt;tt&gt;org.openfaces&lt;/tt&gt; .&lt;/li&gt;&lt;li&gt;The &lt;tt&gt;/qk_internalResource/*&lt;/tt&gt; resource mapping that can optionally be specified in web.xml for performance optimization has been renamed to &lt;tt&gt;/openFacesResources/*&lt;/tt&gt; .&lt;/li&gt;&lt;li&gt;Changed validation message key prefixes for message bundles from &lt;tt&gt;teamdev.jsf&lt;/tt&gt; to &lt;tt&gt;org.openfaces&lt;/tt&gt; .&lt;/li&gt;&lt;li&gt;Namespace for OpenFaces component tags was changed from &lt;tt&gt;&lt;a class="jive-link-external-small" href="http://teamdev.com/quipukit"&gt;http://teamdev.com/quipukit&lt;/a&gt; &lt;/tt&gt; to &lt;tt&gt;&lt;a class="jive-link-external-small" href="http://org.openfaces/"&gt;http://org.openfaces/&lt;/a&gt; &lt;/tt&gt; . Although it is not required to change the namespace prefix in your page files, we recommend to use the &lt;tt&gt;"o"&lt;/tt&gt; prefix when using OpenFaces tags, for example &lt;tt&gt;&amp;lt;o:dataTable&amp;gt;&lt;/tt&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;Library Changes&lt;/h1&gt;&lt;ol&gt;&lt;li&gt;OpenFaces now requires &lt;a class="jive-link-external-small" href="http://commons.apache.org/collections/"&gt;Commons-Collections&lt;/a&gt; library (&lt;span style="font-family: 'courier new',courier;"&gt;commons-collection.jar&lt;/span&gt;) as a runtime dependency.&lt;/li&gt;&lt;li&gt;OpenFaces was upgraded to work with the new versions of the &lt;a class="jive-link-external-small" href="http://sourceforge.net/projects/cssparser/"&gt;CSSParser&lt;/a&gt; and &lt;a class="jive-link-external-small" href="http://www.jfree.org/jfreechart/"&gt;JFreeChart&lt;/a&gt; libraries.&lt;/li&gt;&lt;/ol&gt;&lt;p style="padding-left: 30px; "&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;: since the new versions of these libraries have some incompatible changes, you have to replace the old versions of these libraries with the new ones when upgrading from OpenFaces EAP2 or earlier. Here's the list of files that must be updated with their new versions which can be found in OpenFaces distribution package:&lt;/p&gt;&lt;div style="margin-left: 2em; padding-left: 30px; "&gt;&lt;ul&gt;&lt;li&gt;For JFreeChart library, just update &lt;tt&gt;jfreechart.jar&lt;/tt&gt; and &lt;tt&gt;jcommon.jar&lt;/tt&gt; to the new versions.&lt;/li&gt;&lt;li&gt;For CSSParser library, remove the old &lt;tt&gt;ss_css2.jar&lt;/tt&gt; file, and add &lt;tt&gt;cssparser.jar&lt;/tt&gt; and &lt;tt&gt;sac.jar&lt;/tt&gt; instead.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;Removal of Deprecated API&lt;/h1&gt;&lt;p&gt;In version 2.0 we have removed the API that was marked as deprecated in QuipuKit 1.x. Below is the list of changes, with the description of how to retain the appropriate functionality using the new API.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The list of removed attributes, and the appropriate replacements:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Component&lt;/th&gt;&lt;th class="confluenceTh"&gt;Old Attribute Name&lt;/th&gt;&lt;th class="confluenceTh"&gt;Replacement&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;HintLabel&lt;/td&gt;&lt;td class="confluenceTd"&gt;title&lt;/td&gt;&lt;td class="confluenceTd"&gt;hint&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;DataTable, TreeTable&lt;/td&gt;&lt;td class="confluenceTd"&gt;rowOnclick, rowOndblclick, rowOnmousedown, rowOnmousemove, rowOnmouseout, rowOnmouseover, rowOnmouseup&lt;/td&gt;&lt;td class="confluenceTd"&gt;Place &amp;lt;o:row onclick="..."/&amp;gt; inside of your &amp;lt;o:dataTable&amp;gt; or &amp;lt;o:treeTable&amp;gt; tag (applicable for all listed events).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;TabSet&lt;/td&gt;&lt;td class="confluenceTd"&gt;submitOnChange&lt;/td&gt;&lt;td class="confluenceTd"&gt;Use onchange attribute with manual form submission code, e.g. onchange="document.forms[0].submit()"; or use the &amp;lt;o:reloadComponents&amp;gt; tag to introduce Ajax interaction for the onchange event&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The list of removed tags and their replacements:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Tag&lt;/th&gt;&lt;th class="confluenceTh"&gt;Replacement&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&amp;lt;q:cellStyle&amp;gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;Rename all &amp;lt;q:cellStyle&amp;gt; tags to &amp;lt;o:cell&amp;gt; and enclose them into empty &amp;lt;o:row&amp;gt; tags with no additional attributes.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&amp;lt;q:rowStyle&amp;gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&amp;lt;o:row&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;Renamed, Moved API&lt;/h1&gt;&lt;p&gt;Moved/renamed packages:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old Package Name&lt;/th&gt;&lt;th class="confluenceTh"&gt;New Package Name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.ajaxsettings&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.ajaxsettings&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.calendar.daterange&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.calendar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.window&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.chart.impl.view&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.chart.impl.model&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.chart.impl.event&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.chart.view&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.datatable&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.table&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.datechooser&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.input&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.dropdownfield&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.input&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.dynamicImage&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.output&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.focus&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.util&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.foldingpanel&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.panel&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.graphicText&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.output&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.hintlabel&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.output&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.message&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.validation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.inputText&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.input&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.inputTextarea&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.input&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.loadbundle&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.util&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.popuplayer&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.window&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.scrollposition&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.util&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.spinner&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.input&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.suggestionField&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.input&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.tabbedpane&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.panel&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.tabset&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.select&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.treetable&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.table&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.twolistselection&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.select&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Moved/renamed classes:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old Class Name&lt;/th&gt;&lt;th class="confluenceTh"&gt;New Class Name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.chart.impl.model.PlainModelImpl&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart.PlainModel&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.chart.impl.model.PlainSeriesImpl&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart.PlainSeries&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.chart.impl.model.TupleImpl&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart.Tuple&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.dropdown.DropDownField&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.input.DropDownField&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.dropdown.HorizontalAlignment&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.Side&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;teamdev.jsf.component.message.FloatingIconMessage&lt;/td&gt;&lt;td&gt;org.openfaces.component.validation.FloatingIconMessage&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.output.HintLabel&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.output.HintLabel&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.popuplayer.Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.window.Confirmation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.popuplayer.ButtonType&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.window.ButtonType&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.util.LoadingMode&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.LoadingMode&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.component.util.FacesUtil&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.util.Faces&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;teamdev.jsf.renderkit.validation.validator.ClientValidationEnum&lt;/td&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.validation.ClientValidationMode&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Renamed tags:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old Tag Name&lt;/th&gt;&lt;th class="confluenceTh"&gt;New Tag Name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&amp;lt;q:customValidator&amp;gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&amp;lt;o:validateCustom&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&amp;lt;q:emailValidator&amp;gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&amp;lt;o:validateEmail&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&amp;lt;q:equalValidator&amp;gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&amp;lt;o:validateEqual&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&amp;lt;q:regExpValidator&amp;gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&amp;lt;o:validateRegex&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;o:tabbedPaneItem&amp;gt;&lt;/td&gt;&lt;td&gt;&amp;lt;o:subPanel&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;o:tabbedPaneItems&amp;gt;&lt;/td&gt;&lt;td&gt;&amp;lt;o:subPanels&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&amp;lt;q:urlValidator&amp;gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&amp;lt;o:validateUrl&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Renamed attributes. These are applicable to both property names in the actual component classes and the appropriate attribute names.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;DataTable and TreeTable&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Component/Tag&lt;/th&gt;&lt;th class="confluenceTh"&gt;Old Attribute Name&lt;/th&gt;&lt;th class="confluenceTh"&gt;New Attribute Name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Chart&lt;/td&gt;&lt;td class="confluenceTd"&gt;style&lt;/td&gt;&lt;td class="confluenceTd"&gt;textStyle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Confirmation&lt;/td&gt;&lt;td&gt;captionText&lt;/td&gt;&lt;td&gt;caption&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;invokerId&lt;/td&gt;&lt;td class="confluenceTd"&gt;for&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;invokerEventName&lt;/td&gt;&lt;td class="confluenceTd"&gt;event&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;middleAreaClass&lt;/td&gt;&lt;td class="confluenceTd"&gt;contentClass&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;middleAreaStyle&lt;/td&gt;&lt;td class="confluenceTd"&gt;contentStyle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;rolloverMiddleAreaClass&lt;/td&gt;&lt;td class="confluenceTd"&gt;rolloverContentClass&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;rolloverMiddleAreaStyle&lt;/td&gt;&lt;td class="confluenceTd"&gt;rolloverContentStyle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DataTable and TreeTable&lt;/td&gt;&lt;td&gt;allRecordsFilterName&lt;/td&gt;&lt;td&gt;allRecordsFilterText&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DataTable and TreeTable&lt;/td&gt;&lt;td&gt;emptyRecordsFilterName&lt;/td&gt;&lt;td&gt;emptyRecordsFilterText&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DataTable and TreeTable&lt;/td&gt;&lt;td&gt;&lt;tt&gt;nonEmptyRecordsFilterName&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;nonEmptyRecordsFilterText&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DataTable and TreeTable&lt;/td&gt;&lt;td&gt;filterRowStyle&lt;/td&gt;&lt;td&gt;subHeaderRowStyle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DataTable and TreeTable&lt;/td&gt;&lt;td&gt;filterRowClass&lt;/td&gt;&lt;td&gt;subHeaderRowClass&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DataTable and TreeTable&lt;/td&gt;&lt;td&gt;filterRowSeparator&lt;/td&gt;&lt;td&gt;subHeaderRowSeparator&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;GraphicText&lt;/td&gt;&lt;td class="confluenceTd"&gt;style&lt;/td&gt;&lt;td class="confluenceTd"&gt;textStyle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;PopupLayer, Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;closeOnOuterClick&lt;/td&gt;&lt;td class="confluenceTd"&gt;hideOnOuterClick&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TwoListSelection&lt;/td&gt;&lt;td&gt;allowSorting&lt;/td&gt;&lt;td&gt;sortingAllowed&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TwoListSelection&lt;/td&gt;&lt;td&gt;allowItemsOrdering&lt;/td&gt;&lt;td&gt;reorderingAllowed&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;all column tags&lt;/td&gt;&lt;td&gt;filterCellStyle&lt;/td&gt;&lt;td&gt;subHeaderStyle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;all column tags&lt;/td&gt;&lt;td&gt;filterCellClass&lt;/td&gt;&lt;td&gt;subHeaderClass&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Renamed methods:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Class&lt;/th&gt;&lt;th class="confluenceTh"&gt;Old Method Name&lt;/th&gt;&lt;th class="confluenceTh"&gt;New Method Name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart.PlainSeries&lt;/td&gt;&lt;td class="confluenceTd"&gt;setId&lt;/td&gt;&lt;td class="confluenceTd"&gt;setKey&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart.PlainSeries&lt;/td&gt;&lt;td class="confluenceTd"&gt;setSeriesKey&lt;/td&gt;&lt;td class="confluenceTd"&gt;setKey&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart.PlainSeries&lt;/td&gt;&lt;td class="confluenceTd"&gt;getSeriesKey&lt;/td&gt;&lt;td class="confluenceTd"&gt;getKey&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;org.openfaces.component.chart.Series&lt;/td&gt;&lt;td class="confluenceTd"&gt;getId&lt;/td&gt;&lt;td class="confluenceTd"&gt;getKey&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table border="1" cellpadding="3" cellspacing="0" style="; width: 100%; border: 1px solid #000000"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;&lt;span style="color: #ffffff;"&gt;&lt;strong&gt;Component/Tag/Class&lt;/strong&gt;&lt;/span&gt;&lt;/th&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;&lt;span style="color: #ffffff;"&gt;&lt;strong&gt;Change Description&lt;/strong&gt;&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;o:confirmation&amp;gt;&lt;/td&gt;&lt;td&gt;Changed &lt;span style="font-family: 'courier new',courier;"&gt;event&lt;/span&gt; attribute usage for &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:confirmation&amp;gt; tag&lt;/span&gt;: now there shouldn't be &lt;span style="font-family: 'courier new',courier;"&gt;"on"&lt;/span&gt; prefix in event names, e.g. you should use &lt;span style="font-family: 'courier new',courier;"&gt;"click"&lt;/span&gt; instead of &lt;span style="font-family: 'courier new',courier;"&gt;"onclick"&lt;/span&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:foldingPanel&amp;gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:tabbedPane&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;The value &lt;span style="font-family: 'courier new',courier;"&gt;"ajax"&lt;/span&gt; of &lt;span style="font-family: 'courier new',courier;"&gt;loadingMode&lt;/span&gt; attribute has been renamed to &lt;span style="font-family: 'courier new',courier;"&gt;"ajaxLazy"&lt;/span&gt;. The appropriate enumeration constant in the&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.LoadingMode&lt;/span&gt; enumeration has also been renamed from &lt;span style="font-family: 'courier new',courier;"&gt;AJAX&lt;/span&gt; to &lt;span style="font-family: 'courier new',courier;"&gt;AJAX_LAZY&lt;/span&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;o:scrollPosition&amp;gt;&lt;/td&gt;&lt;td&gt;The &lt;tt&gt;scrollX&lt;/tt&gt; and &lt;tt&gt;scrollY&lt;/tt&gt; attributes of &lt;tt&gt;&amp;lt;o:scrollPosition&amp;gt;&lt;/tt&gt; tag were combined into one &lt;tt&gt;value&lt;/tt&gt; attribute that should be specified as a binding to a property of type &lt;tt&gt;java.awt.Point&lt;/tt&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;o:tabbedPaneItem&amp;gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Renamed tag &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:tabbedPaneItem&amp;gt; -&amp;gt; &amp;lt;o:subPanel&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Renamed &lt;span style="font-family: 'courier new', courier;"&gt;"tag"&lt;/span&gt; facet to &lt;span style="font-family: 'courier new', courier;"&gt;"caption"&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Confirmation, FoldingPanel&lt;/td&gt;&lt;td&gt;Renamed &lt;span style="font-family: 'courier new', courier;"&gt;getCaption&lt;/span&gt;/&lt;span style="font-family: 'courier new', courier;"&gt;setCaption&lt;/span&gt; methods to &lt;span style="font-family: 'courier new', courier;"&gt;getCaptionFacet&lt;/span&gt;/&lt;span style="font-family: 'courier new', courier;"&gt;setCaptionFacet&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;org.openfaces.util.FacesUtil&lt;/td&gt;&lt;td&gt;&lt;ol&gt;&lt;li&gt;Renamed class: &lt;span style="font-family: 'courier new', courier;"&gt;FacesUtil -&amp;gt; Faces&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Replaced &lt;span style="font-family: 'courier new',courier;"&gt;getRequestMapValue(String varName)&lt;/span&gt; method with &lt;span style="font-family: 'courier new',courier;"&gt;var(String varName)&lt;/span&gt; method, which is more universal as it can fetch not just request-scope variables.&lt;/li&gt;&lt;li&gt;Renamed method: &lt;span style="font-family: 'courier new',courier;"&gt;getRequestParameterMapValue(String paramName)&lt;/span&gt; -&amp;gt; &lt;span style="font-family: 'courier new',courier;"&gt;r&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;equestParam(String paramName)&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Removed &lt;span style="font-family: 'courier new',courier;"&gt;getRequestParameterMapValueAsDate(String paramName)&lt;/span&gt; method. Its invocations should now be replaced with &lt;span style="font-family: 'courier new',courier;"&gt;requestParam(String paramName, Date.class)&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;Classes in &lt;span style="font-family: 'courier new', courier;"&gt;org.openfaces.component.table&lt;/span&gt;&lt;/span&gt; package (former &lt;span style="font-family: 'courier new', courier;"&gt;teamdev.jsf.component.datatable&lt;/span&gt;) classes&lt;/td&gt;&lt;td&gt;&lt;p&gt;The following classes were renamed to match the appropriate tag names:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableColumnGroup -&amp;gt; ColumnGroup&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableColumn -&amp;gt; Column&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;DynamicTableColumn -&amp;gt; DynamicColumn&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableColumns -&amp;gt; Columns&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableCell -&amp;gt; Cell&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableRow -&amp;gt; Row&lt;/span&gt; .&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;The appropriate &lt;span style="font-family: 'courier new',courier;"&gt;COMPONENT_TYPE&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;COMPONENT_FAMILY&lt;/span&gt; strings were changed accordingly.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;Client-Side API Changes&lt;/h1&gt;&lt;h2&gt;The New &lt;tt&gt;O$(id)&lt;/tt&gt; Function&lt;/h2&gt;&lt;p&gt;OpenFaces 2.0 introduces a new JavaScript function named "O$(id)" (capital letter &lt;em&gt;O&lt;/em&gt; and a dollar sign) that locates a DOM element by its identifier. Locating element by id is a very common scenario, where the "document.getElementById(id)" function is usually invoked. The &lt;tt&gt;O$(id)&lt;/tt&gt; function works in the same way and can be used as a short replacement for this expression. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/index.html#Index-The%7B%7BO%24%28id%29%7D%7DFunction"&gt;documentation&lt;/a&gt; for usage example.&lt;/p&gt;&lt;h2&gt;Unified Client-Side API&lt;/h2&gt;&lt;p&gt;In QuipuKit 1.x each method of component's client-side API was available in two ways:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;As a "global" function prefixed with &lt;tt&gt;"q_"&lt;/tt&gt; and receiving component identifier as the first parameter, for example &lt;tt&gt;q_showPopupLayer(popupId)&lt;/tt&gt;;&lt;/li&gt;&lt;li&gt;As a component instance method without a prefix and component id parameter, for example &lt;tt&gt;popup.show()&lt;/tt&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In OpenFaces 2.0, the first way of using the component's client-side API is not available anymore. Therefore you should replace invocations of all "global" functions, the functions that start with the &lt;tt&gt;"q_"&lt;/tt&gt; prefix, with usages of the appropriate instance methods. We recommend using the new &lt;tt&gt;O$(id)&lt;/tt&gt; function to simplify this process. Here are some examples of replacing the old invocations with the new ones:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old-Style Invocation&lt;/th&gt;&lt;th class="confluenceTh"&gt;New-Style Invocation&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;q_showPopupLayer("form:popup1")&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$("form:popup1").show()&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;q_showPopupLayerAtXY("form:popup1", 150, 100)&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$("form:popup1").showAtXY(150, 100)&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;q_isTableSelectionEmpty("form:dataTable1")&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$("form:datatable1").isSelectionEmpty()&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;Client-Side Validation Functions&lt;/h2&gt;&lt;p&gt;Validation functions have undergone a change similar to the one described above. The notation for validation function names was changed. The &lt;tt&gt;"q_"&lt;/tt&gt; prefix was removed, and all functions were placed into the &lt;tt&gt;"O$"&lt;/tt&gt; namespace instead. That means that now you should invoke such functions as methods of the &lt;tt&gt;"O$"&lt;/tt&gt; variable. Here are the examples:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old-Style Invocation&lt;/th&gt;&lt;th class="confluenceTh"&gt;New-Style Invocation&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;q_validate(myComponent)&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$.validate(myComponent)&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;q_validateForm(document.forms[0])&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$.validateForm(document.forms[0])&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style="padding-left: 30px; "&gt;&lt;span style="font-weight: normal; font-size: 19px;"&gt;&lt;strong&gt;Migrating to the New Filtering API&lt;/strong&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;All of the filtering-related attributes were removed from &lt;tt&gt;&amp;lt;o:column&amp;gt;&lt;/tt&gt; (former &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;q:column&amp;gt;&lt;/span&gt;) tag and should now be specified inside of one of the new filter tags, depending on type of the filter (formerly specified with the&lt;tt&gt;filterKind&lt;/tt&gt; attribute). There's the new &lt;tt&gt;"subHeader"&lt;/tt&gt; facet in &lt;tt&gt;&amp;lt;o:column&amp;gt;&lt;/tt&gt; tag, where the filter tag should be placed. Here are the instructions that you can use to migrate to the new API:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;1. Place the filter tag inside of the column's &lt;tt&gt;"subHeader"&lt;/tt&gt; facet depending on a value of &lt;tt&gt;filterKind&lt;/tt&gt; attribute and remove the &lt;tt&gt;filterKind&lt;/tt&gt; attribute from column tag as follows:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable" style="padding-left: 30px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;&lt;tt&gt;filterKind&lt;/tt&gt; value&lt;/th&gt;&lt;th class="confluenceTh"&gt;Tag name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;"searchField"&lt;/tt&gt; or no &lt;tt&gt;filterKind&lt;/tt&gt; attribute&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;&amp;lt;o:inputTextFilter&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;"dropDownField"&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;&amp;lt;o:dropDownFieldFilter&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;"comboBox"&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;&amp;lt;o:comboBoxFilter&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;2. Move all of the filtering-related attributes from the column tag to the filter tag and rename them as follows:&lt;/p&gt;&lt;table class="confluenceTable" style="padding-left: 30px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old attribute name&lt;/th&gt;&lt;th class="confluenceTh"&gt;New attribute name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterExpression&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;expression&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterValue&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;value&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterValues&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;options&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterPromptText&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;promptText&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterPromptTextStyle&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;promptTextStyle&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterPromptTextClass&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;promptTextClass&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="padding-left: 30px; "&gt;Here's an example of migrating to the new API.&lt;br/&gt;Old-style code:&lt;/p&gt;&lt;div class="code panel" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; padding-left: 30px; "&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&lt;br/&gt;&amp;lt;o:column filterKind=&lt;span class="code-quote"&gt;"dropDownField"&lt;/span&gt; filterExpression=&lt;span class="code-quote"&gt;"#{product.category}"&lt;/span&gt; filterValues=&lt;span class="code-quote"&gt;"#{Products.categories}"&lt;/span&gt;&amp;gt;&lt;br/&gt;...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;New-style code:&lt;/p&gt;&lt;div class="code panel" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; padding-left: 30px; "&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&lt;br/&gt;&amp;lt;o:column&amp;gt;&lt;br/&gt;    &amp;lt;f:facet name=&lt;span class="code-quote"&gt;"subHeader"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;o:dropDownFieldFilter expression=&lt;span class="code-quote"&gt;"#{product.category}"&lt;/span&gt; options=&lt;span class="code-quote"&gt;"#{Products.categories}"&lt;/span&gt;/&amp;gt;&lt;br/&gt;    &amp;lt;/f:facet&amp;gt;&lt;br/&gt;...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3. &lt;span style="color: gray;"&gt;[Required if you are using custom data providing or filter criterion classes in Java code]&lt;/span&gt;&lt;/p&gt;&lt;div class="panelMacro" style="padding-left: 30px; "&gt; &lt;/div&gt;&lt;p style="padding-left: 30px; "&gt;3.1. The type of the &lt;span style="font-family: 'courier new',courier;"&gt;filterCriteria&lt;/span&gt; request-scope variable was changed from &lt;span style="font-family: 'courier new',courier;"&gt;List&lt;/span&gt; to &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.filter.&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;CompositeFilterCriterion&lt;/span&gt;. The&lt;span style="font-family: 'courier new',courier;"&gt;CompositeFilterCriterion&lt;/span&gt; class has the &lt;span style="font-family: 'courier new',courier;"&gt;getCriteria()&lt;/span&gt; method that returns a list of criterion objects.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.2. The &lt;span style="font-family: 'courier new',courier;"&gt;EmptyFilterCriterion&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;NonEmptyFilterCriterion&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;TextFilterCriterion&lt;/span&gt; classes were replaced with a generic&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.filter.ExpressionFilterCriterion&lt;/span&gt; class, that is parameterized with filter condition to address different filtering scenarios (see the &lt;span style="font-family: 'courier new',courier;"&gt;getCondition()&lt;/span&gt;and &lt;span style="font-family: 'courier new',courier;"&gt;isInverse()&lt;/span&gt; methods). See the following items for detilas.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.3. The usage &lt;span style="font-family: 'courier new',courier;"&gt;getColumnId()&lt;/span&gt; method of &lt;span style="font-family: 'courier new',courier;"&gt;TextFilterCriterion&lt;/span&gt; is now replaced with the usage of &lt;span style="font-family: 'courier new',courier;"&gt;getExpressionStr()&lt;/span&gt; method of &lt;span style="font-family: 'courier new',courier;"&gt;ExpressionFilterCriterion&lt;/span&gt; class, and it now returns filter's expression string instead of column id. Replacement of column Id with filter's expression string is required because a filter is not required to be placed inside of table's column now, and can even be placed outside of the table, hence filter's expression is now the filter's identifier when using the custom data providing mode. So besides replacing &lt;span style="font-family: 'courier new',courier;"&gt;getColumnId()&lt;/span&gt; invocations with &lt;span style="font-family: 'courier new',courier;"&gt;getExpressionStr()&lt;/span&gt;, be sure to specify the appropriate string (a-la column id) in the filter's &lt;span style="font-family: 'courier new',courier;"&gt;expression&lt;/span&gt; attribute.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.4. The usage of getText() method of TextFilterCriterion is now replaced with usage of getArg1() method. Unlike the getText() method which returns java.lang.String, getArg1() returns java.lang.Object to allow non-string comparisons, so you should convert the result of invoking the getArg1() method using the toString() method to match the old behavior.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.5. The checks for instances of &lt;span style="font-family: 'courier new',courier;"&gt;EmptyFilterCriterion&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;NonEmptyFilterCriterion&lt;/span&gt; classes should now be replaced with checks of the &lt;span style="font-family: 'courier new',courier;"&gt;ExpressionFilterCriterion&lt;/span&gt;'s condition and inverse properties. The condition is an enumeration of &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.filter.FilterCondition&lt;/span&gt; type, which distinguishes between different types of filtering, and in particular the value of &lt;span style="font-family: 'courier new',courier;"&gt;FilterCondition.EMPTY&lt;/span&gt; means that empty records should be accepted (and this is a replacement for checking the &lt;span style="font-family: 'courier new',courier;"&gt;EmptyFilterCriterion&lt;/span&gt; class instance), and if&lt;span style="font-family: 'courier new',courier;"&gt;isInverse()&lt;/span&gt; method returns true at the same time this is the case for filtering the non-empty records (and this is a replacement for checking the &lt;span style="font-family: 'courier new',courier;"&gt;NonEmptyFilterCriterio&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;n&lt;/span&gt; class instance).&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Here's a simple example of how the appropriate code is to be changed as a result of this change.&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Old-style code:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:column id="name" filterKind="searchField"&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;List&amp;lt;ColumnFilterCriterion&amp;gt; criteria = (List) Faces.var("filterCriteria");&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;for (ColumnFilterCriterion criterion: criteria) {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    String columnId = criterion.getColumnId();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    String searchString = ((TextFilterCriterion)criterion).getText();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;New-style code:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:column&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    &amp;lt;f:facet name="subHeader"&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;        &amp;lt;o:inputTextFilter expression="name"/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    &amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;CompositeFilterCriterion criteria = Faces.var("filterCriteria", CompositeFilterCriterion.class);&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;for (FilterCriterion c: criteria.getCriteria) {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;     ExpressionFilterCriterion criterion = (ExpressionFilterCriterion) c;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;     String columnId = criterion.getExpressionStr();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;     String searchString = criterion.getArg1().toString();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Please see the "Handling Large Datasets" section in the DataTable documentation for the general description of the new API.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;4. &lt;span style="color: gray;"&gt;[Optional]&lt;/span&gt; Drop-down field filters are now configured to provide input suggestions by default, though you can turn this behavior off if you'd like the filters to behave exactly as before. This can be done by declaring the following attributes on the &lt;tt&gt;&amp;lt;o:dropDownFieldFilter&amp;gt;&lt;/tt&gt; tag: &lt;tt&gt;suggestionMode="none" autoComplete="false"&lt;/tt&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;5. &lt;span style="color: gray;"&gt;[Optional]&lt;/span&gt; Input text filters now automatically perform filtering as the user types in the field. This behavior can be turned off to match the old behavior by specifying the following attribute for&lt;tt&gt;&amp;lt;o:inputTextFilter&amp;gt;&lt;/tt&gt; tag: &lt;tt&gt;autoFilterDelay="-1"&lt;/tt&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;6. &lt;span style="color: #808080;"&gt;[Optional]&lt;/span&gt; The default filtering condition for non-string values is now &lt;span style="font-family: 'courier new',courier;"&gt;"equals"&lt;/span&gt; instead of &lt;span style="font-family: 'courier new',courier;"&gt;"contains"&lt;/span&gt;. If you'd like to retain the old behavior of always searching by substring anyway (e.g. if you'd like for filtering integer values "1" to match both "1" and "10"), declare the &lt;span style="font-family: 'courier new',courier;"&gt;condition="contains"&lt;/span&gt; attribute on the appropriate filter tags.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;The &lt;tt&gt;q_refreshTable&lt;/tt&gt; and &lt;tt&gt;q_refreshTreeTable&lt;/tt&gt; Functions&lt;/h2&gt;&lt;p&gt;In OpenFaces 2.0, the &lt;tt&gt;q_refreshTable&lt;/tt&gt; and &lt;tt&gt;q_refreshTreeTable&lt;/tt&gt; functions were removed in favor of the new API that allows reloading any components and provides a wider set of possibilities. OpenFaces 2.0 introduces the new &lt;tt&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/reloadcomponents.html"&gt;ReloadComponents&lt;/a&gt;&lt;/tt&gt; component that allows reloading one or more components with Ajax. This component provides programmatic access to its functionality using the &lt;tt&gt;O$.reloadComponents&lt;/tt&gt; function. &lt;tt&gt;q_refreshTable&lt;/tt&gt; and &lt;tt&gt;q_refreshTreeTable&lt;/tt&gt; function invocations should be replaced with &lt;tt&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/reloadcomponents.html#ReloadComponents-PureJavaScriptAPI"&gt;O$.ajax.request&lt;/a&gt; &lt;span&gt;&lt;/span&gt;&lt;/tt&gt;invocations as shown below.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old-Style Invocation&lt;/th&gt;&lt;th class="confluenceTh"&gt;New-Style Invocation&lt;/th&gt;&lt;th class="confluenceTh"&gt;Notes&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;q_refreshTable("form:dataTable1")&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$.ajax.request(this, event, {render:"form:dataTable1"})&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;Refreshing the table without additional options&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;q_refreshTable("form:dataTable1",&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;["f&lt;/span&gt;&lt;tt&gt;orm:field1","form:field2"])&lt;/tt&gt;&lt;/p&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$.ajax.request(this, event, {render:"form:dataTable1",&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;execute: "form:field1 form:field2"})&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;Refreshing the table with submitting data for two additional form fields&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;p&gt;&lt;tt&gt;q_refreshTable("form:dataTable1",&lt;/tt&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;/span&gt;&lt;tt&gt;["form:field1","form:field2"],&lt;/tt&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;/span&gt;&lt;tt&gt;"MyBean.action1")&lt;/tt&gt;&lt;/p&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;O$.ajax.request(this, event, {render:"form:dataTable1",&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;execute: "form:field1 form:field2",&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;listener: "MyBean.action1Listener"})&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;p&gt;Refreshing the table with submitting data for two additional form fields and invoking the "MyBean.action1Listener" server action. Note that the action listener function action1Listener should take the additional &lt;span style="font-family: 'courier new', courier;"&gt;ActionEvent&lt;/span&gt; parameter, so it'll be declared like this:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;public void action1Listener(ActionEvent event) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;   // execute the action&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;The same replacements are applicable for the &lt;tt&gt;q_refreshTreeTable&lt;/tt&gt; function. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/reloadcomponents.html"&gt;documentation&lt;/a&gt; for the &lt;tt&gt;ReloadComponents&lt;/tt&gt; component for more information.&lt;/p&gt;&lt;h2&gt;API Changes&lt;/h2&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Component&lt;/th&gt;&lt;th class="confluenceTh"&gt;Change Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;The &lt;tt&gt;q_runConfirmedFunctionByName&lt;/tt&gt;/&lt;tt&gt;runConfirmedFunctionByName&lt;/tt&gt; client-side function was removed. Use &lt;tt&gt;runConfirmedFunction&lt;/tt&gt; function instead and pass an appropriate closure (aka anonymous function) there instead.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;Other&lt;/h1&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Component/Attribute&lt;/th&gt;&lt;th class="confluenceTh"&gt;Note&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;All components&lt;/td&gt;&lt;td class="confluenceTd"&gt;All methods that received ValueBinding/MethodBinding arguments now receive ValueExpression/MethodExpression&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Calendar, FoldingPanel, TabbedPane, TabSet&lt;/td&gt;&lt;td class="confluenceTd"&gt;These components have been made focusable by default in OpenFaces 2.0. You can make them non-focusable as they were in QuipuKit 1.x by specifying the &lt;tt&gt;focusable="false"&lt;/tt&gt; attribute.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Calendar, DateChooser&lt;/td&gt;&lt;td class="confluenceTd"&gt;The &lt;tt&gt;showWeekNumber&lt;/tt&gt; and &lt;tt&gt;weekText&lt;/tt&gt; attributes were removed because of their counterintuitive display and meaning. An alternative implementation can be expected in future versions if needed.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;The &lt;tt&gt;event&lt;/tt&gt; attribute of &lt;tt&gt;&amp;lt;o:confirmation&amp;gt;&lt;/tt&gt; tag now defaults to &lt;tt&gt;"onclick"&lt;/tt&gt;, so you can remove it for declarations where it equals to the default value.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;Confirmation components that previously were declared without the &lt;tt&gt;for&lt;/tt&gt; (former name is &lt;tt&gt;invokerId&lt;/tt&gt;) attribute for explicit usage via JavaScript should now include the explicit &lt;tt&gt;standalone="true"&lt;/tt&gt; attribute declaration. Otherwise these components will automatically be attached to the parent component.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Confirmation&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;p&gt;&lt;tt&gt;closeButtonImageUrl&lt;/tt&gt; and &lt;tt&gt;showCloseWindowButton&lt;/tt&gt; attributes were replaced with a notion of caption areas that is a generic way of customizing caption buttons and is used in FoldingPanel and Window components in addition to the Confirmation component. Here's an example of migrating to the new API:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Old-style code:&lt;/p&gt;&lt;div class="macro"&gt;&lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&amp;lt;q:confirmation&lt;br/&gt;   closeButtonImageUrl=&lt;span class="code-quote"&gt;"close.gif"&lt;/span&gt;&lt;br/&gt;   ...&lt;br/&gt;/&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;New-style code:&lt;/p&gt;&lt;div class="macro"&gt;&lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&amp;lt;o:confirmation ...&amp;gt;&lt;br/&gt;   &amp;lt;o:captionArea&amp;gt;&lt;br/&gt;     &amp;lt;o:closeWindowButton imageUrl=&lt;span class="code-quote"&gt;"close.gif"&lt;/span&gt;/&amp;gt;&lt;br/&gt;   &amp;lt;/o:captionArea&amp;gt;&lt;br/&gt;&amp;lt;/o:confirmation&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;The new &lt;tt&gt;&amp;lt;o:closeWindowButton&amp;gt;&lt;/tt&gt; tag also provides additional attributes for customizing other aspects of button's appearance such as a style and a hint. The window closing button is displayed by default, but you can hide it just by placing an empty &lt;tt&gt;&amp;lt;o:captionArea/&amp;gt;&lt;/tt&gt; tag inside of &lt;tt&gt;&amp;lt;o:confirmation&amp;gt;&lt;/tt&gt; tag. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/confirmation.html#Confirmation-CustomizingCaptionButtons"&gt;documentation&lt;/a&gt; for Confirmation component for more details about customizing the caption buttons.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;FoldingPanel&lt;/td&gt;&lt;td class="confluenceTd"&gt;Adding StateChangeListener to FoldingPanel doesn't trigger form submission on expanding/collapsing FoldingPanel anymore. Use onstatechange event with manual form submission script if necessary.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;FoldingPanel&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;p&gt;Changed the way of customizing toggle button's image and hint. Now there's the possibility to specify so called caption areas, which allows specifying additional buttons in the panel's caption. As a part of this, a new tag for the toggle button was created: &lt;tt&gt;&amp;lt;o:expansionToggleButton&amp;gt;&lt;/tt&gt;, which now includes all of the image URL properties that were previously specified through &lt;tt&gt;&amp;lt;q:foldingPanel&amp;gt;&lt;/tt&gt; (names were unchanged), the &lt;tt&gt;hint&lt;/tt&gt; attribute instead of &lt;tt&gt;foldingPanel&lt;/tt&gt;'s &lt;tt&gt;buttonHint&lt;/tt&gt; attribute and other new attributes. Usages of &amp;lt;q:foldingPanel&amp;gt; tag's buttonPlacement attribute should be replaced with using the &lt;tt&gt;alignment&lt;/tt&gt; attribute of &lt;tt&gt;&amp;lt;o:captionArea&amp;gt;&lt;/tt&gt; tag. Note that if you don't need customization of the toggle button itself, you should include an empty declaration of the &lt;tt&gt;&amp;lt;o:expansionToggleButton/&amp;gt;&lt;/tt&gt; tag into the &lt;tt&gt;&amp;lt;o:captionArea&amp;gt;&lt;/tt&gt; tag for the area to be non-empty. Here's an example of migrating to the new API:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Old-style code:&lt;/p&gt;&lt;div class="macro"&gt;&lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&amp;lt;q:foldingPanel&lt;br/&gt;  collapsedImageUrl=&lt;span class="code-quote"&gt;"collapsed.gif"&lt;/span&gt;&lt;br/&gt;  expandedImageUrl=&lt;span class="code-quote"&gt;"expanded.gif"&lt;/span&gt;&lt;br/&gt;  buttonHint=&lt;span class="code-quote"&gt;"Click here"&lt;/span&gt;&lt;br/&gt;  buttonPlacement=&lt;span class="code-quote"&gt;"left"&lt;/span&gt; ...&amp;gt;&lt;br/&gt;   ...&lt;br/&gt;&amp;lt;/q:foldingPanel&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;New-style code:&lt;/p&gt;&lt;div class="macro"&gt;&lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&amp;lt;o:foldingPanel ...&amp;gt;&lt;br/&gt;   &amp;lt;o:captionArea alignment=&lt;span class="code-quote"&gt;"left"&lt;/span&gt;&amp;gt;&lt;br/&gt;     &amp;lt;o:expansionToggleButton&lt;br/&gt;       collapsedImageUrl=&lt;span class="code-quote"&gt;"collapsed.gif"&lt;br/&gt;&lt;/span&gt;       expandedImageUrl=&lt;span class="code-quote"&gt;"expanded.gif"&lt;/span&gt;&lt;br/&gt;       hint=&lt;span class="code-quote"&gt;"Click here"&lt;/span&gt;/&amp;gt;&lt;br/&gt;   &amp;lt;/o:captionArea&amp;gt;&lt;br/&gt;   ...&lt;br/&gt;&amp;lt;/o:foldingPanel&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="atl_conf_pad" style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;See &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/foldingpanel.html#FoldingPanel-CustomizingCaptionButtons"&gt;FoldingPanel documentation&lt;/a&gt; for a detailed description of how to use caption areas and the &lt;tt&gt;&amp;lt;o:expansionToggleButton&amp;gt;&lt;/tt&gt; tag.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;ScrollPosition&lt;/td&gt;&lt;td class="confluenceTd"&gt;Changed the way of specifying the "for" attribute to be consistent with other components. It should now be specified in the same way as a "for" attribute of &amp;lt;h:outputLabel&amp;gt;, &amp;lt;h:message&amp;gt; or &amp;lt;o:confirmation&amp;gt; components. Previously the whole tree was searched for the short id specified in this attribute. Now it's either an "absolute" id if it starts with a colon symbol, or a "relative" id otherwise. See &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/scrollposition.html#ScrollPosition-SpecifyingScrollPositionFortheScrollableComponent"&gt;ScrollPosition documentation&lt;/a&gt; for details.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Validation&lt;/td&gt;&lt;td class="confluenceTd"&gt;The &amp;lt;q:message&amp;gt; and &amp;lt;q:messages&amp;gt; tags were removed. Since they are identical in API with the standard counterparts, you just need to replace them with the standard &amp;lt;h:message&amp;gt; and &amp;lt;h:messages&amp;gt; tags respectively.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;Validation&lt;/td&gt;&lt;td class="confluenceTd"&gt;Validator IDs were renamed to match the traditional convention:&lt;br/&gt;&lt;tt&gt;org.openfaces.CustomValidator&lt;/tt&gt; -&amp;gt; &lt;tt&gt;org.openfaces.Custom&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;org.openfaces.EmailValidator&lt;/tt&gt; -&amp;gt; &lt;tt&gt;org.openfaces.EMail&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;org.openfaces.EqualValidator&lt;/tt&gt; -&amp;gt; &lt;tt&gt;org.openfaces.Equal&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;org.openfaces.RegexValidator&lt;/tt&gt; -&amp;gt; &lt;tt&gt;org.openfaces.RegularExpression&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;org.openfaces.URLValidator&lt;/tt&gt; -&amp;gt; &lt;tt&gt;org.openfaces.URL&lt;/tt&gt;&lt;br clear="all"/&gt;&lt;br clear="all"/&gt;The following message bundle keys were amended to match the updated validator names:&lt;br/&gt;&lt;tt&gt;org.openfaces.EmailValidatorMessage&lt;/tt&gt; -&amp;gt; &lt;tt&gt;org.openfaces.EMailValidatorMessage&lt;/tt&gt;&lt;br/&gt;&lt;tt&gt;org.openfaces.RegExpValidatorMessage&lt;/tt&gt; -&amp;gt; &lt;tt&gt;org.openfaces.RegexValidatorMessage&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:6d0e84ab-d7da-4839-aa28-7d60436b96ff] --&gt;</description>
      <pubDate>Thu, 30 Apr 2009 16:06:49 GMT</pubDate>
      <author>forum-admin@teamdev.com</author>
      <guid>http://support.teamdev.com/docs/DOC-1111</guid>
      <dc:date>2009-04-30T16:06:49Z</dc:date>
      <clearspace:dateToText>1 month, 1 week ago</clearspace:dateToText>
    </item>
    <item>
      <title>What's New in OpenFaces 2.0</title>
      <link>http://support.teamdev.com/docs/DOC-1112</link>
      <description>&lt;!-- [DocumentBodyStart:ee0502cb-844c-4419-8423-66d1a2283b31] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;h1&gt;General Information&lt;/h1&gt;&lt;p&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org"&gt;OpenFaces&lt;/a&gt; is an open-source library of AJAX-powered JSF components, an &lt;a class="jive-link-external-small" href="http://openfaces.org/components/#AjaxFramework"&gt;Ajax framework&lt;/a&gt; and a client-side &lt;a class="jive-link-external-small" href="http://openfaces.org/components/#ValidationFramework"&gt;validation framework&lt;/a&gt;. OpenFaces is based on the set of JSF components formerly known as QuipuKit library. Here's a list of components inherited from the QuipuKit library: Calendar, Chart, Confirmation, DataTable, DateChooser, DynamicImage, FoldingPanel, GraphicText, HintLabel, PopupLayer, SuggestionField, TabSet, TabbedPane, TreeTable, TwoListSelection, Utility Components (Focus, ScrollPosition, LoadBundle). See the &lt;a class="jive-link-external-small" href="http://openfaces.org/components/"&gt;OpenFaces Components&lt;/a&gt; page for the full description of these components. The rest of this document describes the changes and new features added in OpenFaces version 2.0 since the last release of QuipuKit (version 1.6.2).&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;Ajax Framework&lt;/h1&gt;&lt;p&gt;OpenFaces 2.0 introduces an &lt;a class="jive-link-external-small" href="http://openfaces.org/components/#AjaxFramework"&gt;Ajax framework&lt;/a&gt; which allows adding Ajax-based interactions in cases when components' built-in Ajax capabilities are not enough. OpenFaces Ajax framework addresses a common scenario where the whole page has to be submitted to perform some application-specific action and reload the page with the results. OpenFaces Ajax framework allows resolving such use cases without full page reload using a new non-visual component called &lt;span style="font-family: courier new,courier;"&gt;Ajax&lt;/span&gt;, and an appropriate client-side API. The main purpose of this component is reloading one or more components with Ajax, plus it provides additional features such as choosing the components whose data should be submitted to the server, invoking a server action as part of the Ajax request, and handling frequent requests.&lt;/p&gt;&lt;p&gt;Here's a simple example which demonstrates the usage of the new component:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="macro"&gt;&lt;div class="code panel" style="BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px"&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;  &amp;lt;h:inputText id=&lt;span class="code-quote"&gt;"in"&lt;/span&gt; value=&lt;span class="code-quote"&gt;"#{requestScope['ajaxText']}"&lt;/span&gt;/&amp;gt;&lt;br/&gt;  &amp;lt;h:commandButton value=&lt;span class="code-quote"&gt;"Update"&lt;/span&gt;&amp;gt;&lt;br/&gt;      &amp;lt;o:ajax execute=&lt;span class="code-quote"&gt;"in"&lt;/span&gt; render=&lt;span class="code-quote"&gt;"out"&lt;/span&gt;/&amp;gt;&lt;br/&gt;  &amp;lt;/h:commandButton&amp;gt;&lt;br/&gt;  &amp;lt;h:outputText id=&lt;span class="code-quote"&gt;"out"&lt;/span&gt; value=&lt;span class="code-quote"&gt;"#{requestScope['ajaxText']}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;You can see Ajax Framework in action in &lt;a class="jive-link-external-small" href="http://openfaces.org/demo/ajax"&gt;OpenFaces demo&lt;/a&gt;.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In addition to the declarative tag-based syntax, you can use a client-side API that provides access to the same functionality for a JavaScript code. OpenFaces also allows customizing various aspects of Ajax framework using the &lt;cite&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;AjaxSettings&lt;/span&gt;&lt;/span&gt;&lt;/cite&gt; component, which can be used to customize Ajax progress message and the way of handling session expiration during Ajax requests. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/ajax-framework.html"&gt;documentation&lt;/a&gt; for more information.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;New Components&lt;/h1&gt;&lt;ul class="alternate" type="square"&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#CommandButton"&gt;CommandButton&lt;/a&gt;&lt;/strong&gt; – an extended version of the standard &lt;span style="font-family: courier new,courier;"&gt;&lt;span&gt;&amp;lt;h:commandButton&amp;gt;&lt;/span&gt;&lt;/span&gt; which includes the Ajax features and an ability to customize button's content with sub-components or HTML.&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#CommandLink"&gt;CommandLink&lt;/a&gt;&lt;/strong&gt; – an extended version of the standard &lt;span style="font-family: courier new,courier;"&gt;&lt;span&gt;&amp;lt;h:commandLink&amp;gt;&lt;/span&gt;&lt;/span&gt; which includes the Ajax features.&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#CompositeFilter"&gt;CompositeFilter&lt;/a&gt;&lt;/strong&gt; – 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.&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#BorderLayoutPanel"&gt;BorderLayoutPanel&lt;/a&gt; &lt;span&gt;&lt;/span&gt;&lt;/strong&gt; – a container used to layout groups of components by container's edges. The separators between component groups can either be fixed to introduce a static layout, or can be made draggable and/or collapsible to make a dynamic layout.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#DayTable"&gt;&lt;strong style="font-weight: bold;"&gt;DayTable&lt;/strong&gt;&lt;/a&gt; – a component that allows displaying and editing schedule of events for a day. Each event has a start time, end time, event name, description and other fields. There is also the possibility to show timetable for multiple resources, for example the schedule of tasks for several people.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#ForEach"&gt;&lt;strong style="font-weight: bold;"&gt;ForEach&lt;/strong&gt;&lt;/a&gt; – an iterator component that renders the specified set of components multiple times based on its parameters. The ForEach component is similar to the JSTL &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;c:forEach&amp;gt;&lt;/span&gt; tag, though it can be used to overcome some of the shortcomings of &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;c:forEach&amp;gt;&lt;/span&gt; tag and to eliminate the need for an additional JSTL dependency.&lt;/li&gt;&lt;li&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#InputText"&gt;&lt;strong style="font-weight: bold;"&gt;InputText&lt;/strong&gt;&lt;/a&gt; – supports all of the features of the standard JSF InputText component and extends it with some additional features like rollover and focused styles and prompt text.&lt;/li&gt;&lt;li&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#InputTextarea"&gt;&lt;strong style="font-weight: bold;"&gt;InputTextarea&lt;/strong&gt;&lt;/a&gt; – supports all of the features of the standard JSF InputTextarea component and extends it with some additional features like rollover and focused styles and prompt text.&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#LayeredPane"&gt;LayeredPane&lt;/a&gt;&lt;/strong&gt; &lt;strong style="font-weight: bold;"&gt;–&lt;/strong&gt; a container that allows switching between different sets of displayed components.&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#PopupMenu"&gt;PopupMenu&lt;/a&gt;&lt;/strong&gt; – a component that displays a set of actions in a pop-up box for a user to choose from, and is often used as a context menu. The PopupMenu component can be attached to any component to appear when any particular event occurs in that component. A PopupMenu can be configured to have sub-menus to represent complex hierarchies of actions.&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#SelectBooleanCheckbox"&gt;SelectBooleanCheckbox&lt;/a&gt;&lt;/strong&gt; &lt;span style="font-weight: normal;"&gt;– an extended version of the standard&lt;/span&gt; &lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;lt;h:selectBooleanCheckbox&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: normal;"&gt;component that adds such possibilities as tri-state support, customizing checkbox images and state-dependent styles.&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#SelectOneRadio"&gt;SelectOneRadio&lt;/a&gt;&lt;/strong&gt; – an extended version of the standard &lt;span style="font-family: courier new,courier;"&gt;&lt;span&gt;&amp;lt;h:selectOneRadio&amp;gt;&lt;/span&gt;&lt;/span&gt; component, which provides additional styling options and makes it possible to customize radio buttons with images.&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#SelectManyCheckbox"&gt;SelectManyCheckbox&lt;/a&gt;&lt;/strong&gt; – an extended version of the standard &lt;span style="font-family: courier new,courier;"&gt;&lt;span&gt;&amp;lt;h:selectManyCheckbox&amp;gt;&lt;/span&gt;&lt;/span&gt; component, which provides additional styling options and makes it possible to customize radio buttons with images.&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#Spinner"&gt;Spinner&lt;/a&gt;&lt;/strong&gt; – an input field for entering numbers, which consists of a text field and the attached increase/decrease buttons.&lt;/li&gt;&lt;li&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/components/#Window"&gt;&lt;strong style="font-weight: bold;"&gt;Window&lt;/strong&gt;&lt;/a&gt; – a window-styled container for other JSF components that is displayed over the page content. The Window component has a caption and a content area, it can be dragged around on the page, and resized. Besides, it has the usual maximize/restore, minimize and close buttons in the caption.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;New Features&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;Ajax settings:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;It's now possible to customize Ajax progress message position with new &lt;span style="font-family: 'courier new', courier;"&gt;horizontalAlignment&lt;/span&gt;/&lt;span style="font-family: 'courier new', courier;"&gt;verticalAlignment&lt;/span&gt; attributes of &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:defaultProgressMessage&amp;gt;&lt;/span&gt; tag.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Ajax progress message can now be made semitransparent and shown with a smooth transparency transition (see&lt;/span&gt; &lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/tagReference/o/defaultProgressMessage.html"&gt;&amp;lt;o:defaultProgressMessage&amp;gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: normal;"&gt;tag documentation).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;Added an option to disable mouse interoperation by shading window contents while Ajax request is in progress (see&lt;/span&gt; &lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/tagReference/o/defaultProgressMessage.html"&gt;&amp;lt;o:defaultProgressMessage&amp;gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: normal;"&gt;tag documentation).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;It's now possible to customize the appearance of session expiration confirmation (see the &lt;span style="font-family: 'courier new',courier;"&gt;&lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/tagReference/o/defaultSessionExpiration.html"&gt;&amp;lt;o:defaultSessionExpiration&amp;gt;&lt;/a&gt;&lt;/span&gt; tag documentation).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;DataTable/TreeTable:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;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 &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/datatable.html#DataTable-ContentScrolling"&gt;Content Scrolling&lt;/a&gt; section in DataTable and TreeTable documentation for details.&lt;/li&gt;&lt;li&gt;Added support for interactive drag &amp;amp; drop column reordering. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/datatable.html#DataTable-Drag%26DropColumnReordering"&gt;Drag &amp;amp; Drop Column Reordering&lt;/a&gt; section in DataTable and TreeTable documentation for details.&lt;/li&gt;&lt;li&gt;Added support for interactive column visibility customization. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/datatable.html#DataTable-DisplayingColumnMenus"&gt;Displaying Column Menus&lt;/a&gt; section in DataTable and TreeTable documentation for details.&lt;/li&gt;&lt;li&gt;Numerous filtering enhancements, see the "DataTable/TreeTable Filtering Enhancements" section below.&lt;/li&gt;&lt;li&gt;Added support for specifying a popup menu for table columns, containing either the standard or customized set of actions.&lt;/li&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new',courier;"&gt;header&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;footer&lt;/span&gt; attributes to all column tags to serve as a convenient replacement for specifying the text in the &lt;span style="font-family: 'courier new',courier;"&gt;"header"&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;"footer"&lt;/span&gt; facets.&lt;/li&gt;&lt;li&gt;Significantly simplified handling large data sets using Hibernate library. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/datatable.html#DataTable-UsingDataTablewiththeHibernateLibrary"&gt;Using DataTable with the Hibernate Library&lt;/a&gt; section in DataTable documentation for details.&lt;/li&gt;&lt;li&gt;There's a new &lt;span style="font-family: 'courier new',courier;"&gt;"subHeader"&lt;/span&gt; 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.&lt;/li&gt;&lt;li&gt;Added a new &lt;span style="font-family: courier new,courier;"&gt;DataTable.getPageIndexForRowKey&lt;/span&gt; method for scenarios like detecting the page(s) for selected item(s).&lt;/li&gt;&lt;li&gt;Improved TreeTable configuration checking and error reporting.&lt;/li&gt;&lt;li&gt;DataTable is now automatically focused when the pagination buttons are used.&lt;/li&gt;&lt;li&gt;Resolved the known issue where editable and command components couldn't be used in the Ajax-enabled TreeTable.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;TabbedPane:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added a new loading mode &lt;span style="font-family: 'courier new',courier;"&gt;"ajaxAlways"&lt;/span&gt;, which allows loading a fresh tab content on each tab switch. Also note the API change: the &lt;span style="font-family: 'courier new',courier;"&gt;"ajax"&lt;/span&gt; mode has been renamed to &lt;span style="font-family: 'courier new',courier;"&gt;"ajaxLazy"&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;FoldingPanel:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added a new loading mode &lt;span style="font-family: 'courier new',courier;"&gt;"ajaxAlways"&lt;/span&gt;, which allows loading a fresh content on each expansion of FoldingPanel. Also note the API change: the &lt;span style="font-family: 'courier new',courier;"&gt;"ajax"&lt;/span&gt; mode has been renamed to&lt;span style="font-family: 'courier new',courier;"&gt;"ajaxLazy"&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;FoldingPanel's expansion state is now properly saved when placed inside of iteration components such as &lt;tt&gt;&amp;lt;o:dataTable&amp;gt;&lt;/tt&gt; and &lt;tt&gt;&amp;lt;o:forEach&amp;gt;&lt;/tt&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: bold;"&gt;Other:&lt;/strong&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Extended validation framework: added the possibility for annotation-based validation with &lt;tt&gt;&amp;lt;o:validateAll&amp;gt;&lt;/tt&gt; tag.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Added the caption attribute for &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:foldingPanel&amp;gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:subPanel&amp;gt;&lt;/span&gt; (former &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:tabbedPaneItem&amp;gt;&lt;/span&gt;) tags, which is a short replacement for the&lt;span style="font-family: 'courier new',courier;"&gt;"caption"&lt;/span&gt; facet if you need to specify the caption as text.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new',courier;"&gt;oncontextmenu&lt;/span&gt; event for all components.&lt;/li&gt;&lt;li&gt;Added built-in Ajax support to &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:singleRowSelection&amp;gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:multipleRowSelection&amp;gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:singleNodeSelection&amp;gt;&lt;/span&gt;, and &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:multipleNodeSelection&amp;gt;&lt;/span&gt; tags with &lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-family: 'courier new',courier;"&gt;render&lt;/span&gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-family: 'courier new',courier;"&gt;execute&lt;/span&gt;&lt;/span&gt; attributes.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Improved JavaScript performance for the DataTable/TreeTable components.&lt;/li&gt;&lt;li&gt;All popups in components like DropDownField, SuggestionField, Calendar, DateChooser, PopupMenu can now be closed by pressing Esc key.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Added support for handling mouse events in &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:floatingIconMessage&amp;gt;&lt;/span&gt; tag.&lt;/li&gt;&lt;li&gt;Improved error checking when processing default validation message presentation parameters in web.xml.&lt;/li&gt;&lt;li&gt;A new simpler way of attaching Confirmation to components: now you can simply add a Confirmation component inside of other component (like it can be done with &amp;lt;o:ajax&amp;gt; tag) and it will automatically be attached to the "onclick" event of the parent component. The event to which confirmation is attached can be customized with the "event" attribute.&lt;/li&gt;&lt;li&gt;New "draggableByContent" attribute for &amp;lt;o:confirmation&amp;gt; tag (false by default). If confirmation is configured to be draggable, chooses whether the confirmation window can be dragged by window caption (the default behavior), or by any part of the confirmation window.&lt;/li&gt;&lt;li&gt;Added an ability to place custom caption buttons into Confirmation and FoldingPanel components.&lt;/li&gt;&lt;li&gt;Added an ability to place custom caption buttons into FoldingPanel's caption&lt;/li&gt;&lt;li&gt;Added pressedButtonStyle/pressedButtonClass attributes for DropDownButton and DateChooser.&lt;/li&gt;&lt;li&gt;Added focusedStyle/focusedClass for all input components.&lt;/li&gt;&lt;li&gt;Added tabIndex attribute for TwoListSelection component.&lt;/li&gt;&lt;li&gt;Added standard client events to DynamicImage component.&lt;/li&gt;&lt;li&gt;Added mouse events to GrahicText component.&lt;/li&gt;&lt;li&gt;Extended client-side API for TabSet and TabbedPane components: added &lt;span style="font-family: 'courier new',courier;"&gt;getTabCount&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;getPageCount&lt;/span&gt; functions respectively.&lt;/li&gt;&lt;li&gt;Extended client-side API for TwoListSelection component: added &lt;span style="font-family: 'courier new',courier;"&gt;selectAll&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;unselectAll&lt;/span&gt; functions.&lt;/li&gt;&lt;li&gt;Added &lt;span style="font-family: 'courier new',courier;"&gt;typingAllowed&lt;/span&gt; attribute for &lt;span style="font-family: 'courier new',courier;"&gt;DateChooser&lt;/span&gt; component to enable scenario where a date should only be selectable from drop-down calendar.&lt;/li&gt;&lt;li&gt;FoldingPanel's expansion state is now correctly saved when placed inside of iteration components such as &lt;tt&gt;&amp;lt;o:dataTable&amp;gt;&lt;/tt&gt; and &lt;tt&gt;&amp;lt;o:forEach&amp;gt;&lt;/tt&gt;.&lt;/li&gt;&lt;li&gt;DataTable/TreeTable filter fields' text is now not marked with selection for convenient typing after filtering.&lt;/li&gt;&lt;li&gt;Rollover button style for DateChooser and DropDownField is now applied when mouse is over the button itself rather than over the field.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;strong style="font-weight: bold;"&gt;DataTable/TreeTable Filtering Enhancements&lt;/strong&gt;&lt;/h4&gt;&lt;p&gt;The filtering API for DataTable and TreeTable components has been significantly reviewed and enhanced. The previous filtering API consisted of filtering-related attributes in &lt;tt&gt;&amp;lt;o:column&amp;gt;&lt;/tt&gt; 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: &lt;tt&gt;&amp;lt;o:inputTextFilter&amp;gt;&lt;/tt&gt;, &lt;tt&gt;&amp;lt;o:dropDownFieldFilter&amp;gt;&lt;/tt&gt;, and &lt;tt&gt;&amp;lt;o:comboBoxFilter&amp;gt;&lt;/tt&gt;. 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 &lt;a class="jive-link-wiki-small" href="http://support.teamdev.com/docs/DOC-1111"&gt;Migrating from QuipuKit 1.6.2&lt;/a&gt; document.&lt;/p&gt;&lt;p&gt;Here are the new features that were implemented as part of the new API:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It's possible to customize whether search should be case sensitive or not.&lt;/li&gt;&lt;li&gt;It's now possible to customize the condition by which search has to be performed (contains, equals, less, greater, etc.).&lt;/li&gt;&lt;li&gt;It's now possible to specify style and all other component-specific attributes of filtering components.&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;DropDownFieldFilter now suggests filter text as the user types it.&lt;/li&gt;&lt;li&gt;Filters can now be placed outside of their DataTable/TreeTable components.&lt;/li&gt;&lt;li&gt;The filtering expression can now be detected automatically when a filter resides in a table column.&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-left: 2em"&gt; &lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Please see the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/datatable.html#DataTable-Filtering"&gt;Filtering&lt;/a&gt; section in the DataTable and TreeTable documentation for the comprehensive usage details.&lt;/p&gt;&lt;h4&gt;Extended Keyboard Support&lt;/h4&gt;&lt;p&gt;OpenFaces 2.0 has extended keyboard support for its components. The following components now include keyboard support:&lt;/p&gt;&lt;ul class="alternate" type="square"&gt;&lt;li&gt;Calendar&lt;/li&gt;&lt;li&gt;CommandButton&lt;/li&gt;&lt;li&gt;CommandLink&lt;/li&gt;&lt;li&gt;Confirmation&lt;/li&gt;&lt;li&gt;CompositeFilter&lt;/li&gt;&lt;li&gt;DataTable&lt;/li&gt;&lt;li&gt;DateChooser&lt;/li&gt;&lt;li&gt;DropDownField&lt;/li&gt;&lt;li&gt;InputText (native keyboard support)&lt;/li&gt;&lt;li&gt;InputTextarea (native keyboard support)&lt;/li&gt;&lt;li&gt;FoldingPanel&lt;/li&gt;&lt;li&gt;PopupMenu&lt;/li&gt;&lt;li&gt;SelectBooleanCheckbox&lt;/li&gt;&lt;li&gt;SelectOneRadio&lt;/li&gt;&lt;li&gt;SelectManyCheckbox&lt;/li&gt;&lt;li&gt;Spinner&lt;/li&gt;&lt;li&gt;SuggestionField&lt;/li&gt;&lt;li&gt;TabSet&lt;/li&gt;&lt;li&gt;TabbedPane&lt;/li&gt;&lt;li&gt;TreeTable&lt;/li&gt;&lt;li&gt;TwoListSelection (native keyboard support)&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;&lt;strong style="font-weight: bold;"&gt;Migrating from QuipuKit 1.6.2&lt;/strong&gt;&lt;/h1&gt;&lt;p&gt;Please see the &lt;a class="jive-link-wiki-small" href="http://support.teamdev.com/docs/DOC-1111"&gt;Migrating from QuipuKit 1.6.2&lt;/a&gt; document for the migration instructions.&lt;/p&gt;&lt;ul class="alternate" type="square"&gt;&lt;li style="list-style: none"&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:ee0502cb-844c-4419-8423-66d1a2283b31] --&gt;</description>
      <pubDate>Thu, 30 Apr 2009 16:22:41 GMT</pubDate>
      <author>forum-admin@teamdev.com</author>
      <guid>http://support.teamdev.com/docs/DOC-1112</guid>
      <dc:date>2009-04-30T16:22:41Z</dc:date>
      <clearspace:dateToText>4 months, 1 week ago</clearspace:dateToText>
    </item>
    <item>
      <title>Migrating from OpenFaces EAP2</title>
      <link>http://support.teamdev.com/docs/DOC-1172</link>
      <description>&lt;!-- [DocumentBodyStart:098d0872-35b0-47ac-b27d-cd9cb539faad] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;This document describes the changes that have to be made in your application for migrating to the final OpenFaces 2.0 version from the prerelease version OpenFaces EAP2.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;&lt;span style="font-size: 18pt;"&gt;Library Changes&lt;/span&gt;&lt;/h1&gt;&lt;ol&gt;&lt;li&gt;OpenFaces now requires &lt;a class="jive-link-external-small" href="http://commons.apache.org/collections/"&gt;Commons-Collections&lt;/a&gt; library (&lt;span style="font-family: 'courier new',courier;"&gt;commons-collection.jar&lt;/span&gt;) as a runtime dependency.&lt;/li&gt;&lt;li&gt;OpenFaces was upgraded to work with the new versions of the &lt;a class="jive-link-external-small" href="http://sourceforge.net/projects/cssparser/"&gt;CSSParser&lt;/a&gt; and &lt;a class="jive-link-external-small" href="http://www.jfree.org/jfreechart/"&gt;JFreeChart&lt;/a&gt; libraries.&lt;/li&gt;&lt;/ol&gt;&lt;p style="padding-left: 30px; "&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;: since the new versions of these libraries have some incompatible changes, you have to replace the old versions of these libraries with the new ones when upgrading from OpenFaces EAP2 or earlier. Here's the list of files that must be updated with their new versions which can be found in OpenFaces distribution package:&lt;/p&gt;&lt;div style="margin-left: 2em; padding-left: 30px; "&gt;&lt;ul&gt;&lt;li&gt;For JFreeChart library, just update &lt;tt&gt;jfreechart.jar&lt;/tt&gt; and &lt;tt&gt;jcommon.jar&lt;/tt&gt; to the new versions.&lt;/li&gt;&lt;li&gt;For CSSParser library, remove the old &lt;tt&gt;ss_css2.jar&lt;/tt&gt; file, and add &lt;tt&gt;cssparser.jar&lt;/tt&gt; and &lt;tt&gt;sac.jar&lt;/tt&gt; instead.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;   You can find the new libraries in the &lt;span style="font-family: 'courier new',courier;"&gt;lib&lt;/span&gt; directory of the OpenFaces distribution package.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 style="padding-left: 30px; "&gt;&lt;span style="font-size: 18pt;"&gt;API Changes&lt;/span&gt;&lt;/h1&gt;&lt;table border="1" cellpadding="3" cellspacing="0" style="border: 1px solid #000000; width: 100%; padding-left: 30px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;Component/Tag/Class&lt;/th&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;Change Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;all column tags&lt;/td&gt;&lt;td&gt;Renamed attributes: &lt;tt&gt;filterCellStyle&lt;/tt&gt;/&lt;tt&gt;filterCellClass&lt;/tt&gt; &lt;span style="font-family: 'courier new',courier;"&gt;-&amp;gt;&lt;/span&gt; &lt;tt&gt;subHeaderStyle&lt;/tt&gt;/&lt;tt&gt;subHeaderClass&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:confirmation&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Renamed attribute: &lt;span style="font-family: 'courier new',courier;"&gt;captionText -&amp;gt; caption&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;&amp;lt;o:dataTable&amp;gt;&lt;/tt&gt; and &lt;tt&gt;&amp;lt;o:treeTable&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Renamed attributes:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;tt&gt;allRecordsFilterName -&amp;gt; allRecordsFilterText&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;,&lt;/span&gt;&lt;/tt&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;tt&gt;&lt;tt&gt;emptyRecordsFilterName -&amp;gt; emptyRecordsFilterText&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;,&lt;/span&gt;&lt;/tt&gt;&lt;/tt&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;tt&gt;&lt;tt&gt;&lt;tt&gt;nonEmptyRecordsFilterName&lt;/tt&gt; -&amp;gt; &lt;tt&gt;nonEmptyRecordsFilterText&lt;/tt&gt;&lt;/tt&gt;&lt;/tt&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;&amp;lt;o:dataTable&amp;gt;&lt;/tt&gt; and &lt;tt&gt;&amp;lt;o:treeTable&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Renamed attributes:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;filterRowStyle -&amp;gt; subHeaderRowStyle&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;filterRowClass -&amp;gt; subHeaderRowClass&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;filterRowSeparator -&amp;gt; subHeaderRowSeparator&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:eventActionBar&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Renamed attributes:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;backgroundTransparencyLevel -&amp;gt; backgroundTransparency&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;backgroundIntensityLevel -&amp;gt; backgroundIntensity&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:foldingPanel&amp;gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:tabbedPane&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;The value &lt;span style="font-family: 'courier new',courier;"&gt;"ajax"&lt;/span&gt; of &lt;span style="font-family: 'courier new',courier;"&gt;loadingMode&lt;/span&gt; attribute has been renamed to &lt;span style="font-family: 'courier new',courier;"&gt;"ajaxLazy"&lt;/span&gt;. The appropriate enumeration constant in the&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.LoadingMode&lt;/span&gt; enumeration has also been renamed from &lt;span style="font-family: 'courier new',courier;"&gt;AJAX&lt;/span&gt; to &lt;span style="font-family: 'courier new',courier;"&gt;AJAX_LAZY&lt;/span&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:foreach&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Renamed attribute: &lt;span style="font-family: 'courier new',courier;"&gt;statusVar&lt;/span&gt; &lt;span style="font-family: 'courier new',courier;"&gt;&lt;span style="font-family: 'courier new',courier;"&gt;-&amp;gt; varStatus&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:scrollPosition&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;The &lt;tt&gt;scrollX&lt;/tt&gt; and &lt;tt&gt;scrollY&lt;/tt&gt; attributes of &lt;tt&gt;&amp;lt;o:scrollPosition&amp;gt;&lt;/tt&gt; tag were combined into one &lt;tt&gt;value&lt;/tt&gt; attribute that should be specified as a binding to a property of type &lt;tt&gt;java.awt.Point&lt;/tt&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:tabbedPaneItem&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Renamed tag &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:tabbedPaneItem&amp;gt; -&amp;gt; &amp;lt;o:subPanel&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Renamed &lt;span style="font-family: 'courier new',courier;"&gt;"tag"&lt;/span&gt; facet to &lt;span style="font-family: 'courier new',courier;"&gt;"caption"&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;o:tabbedPaneItems&amp;gt;&lt;/td&gt;&lt;td&gt;Renamed tag &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:tabbedPaneItems&amp;gt; -&amp;gt; &amp;lt;o:subPanels&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:timetableEvent&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Renamed attributes:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;backgroundTransparencyLevel -&amp;gt; backgroundTransparency&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;backgroundIntensityLevel -&amp;gt; backgroundIntensity&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Confirmation, FoldingPanel, SidePanel, Window&lt;/td&gt;&lt;td&gt;Renamed &lt;span style="font-family: 'courier new',courier;"&gt;getCaption&lt;/span&gt;/&lt;span style="font-family: 'courier new',courier;"&gt;setCaption&lt;/span&gt; methods to &lt;span style="font-family: 'courier new',courier;"&gt;getCaptionFacet&lt;/span&gt;/&lt;span style="font-family: 'courier new',courier;"&gt;setCaptionFacet&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SelectBooleanCheckbox&lt;/td&gt;&lt;td&gt;&lt;p&gt;Moved component class:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.input.SelectBooleanCheckbox -&amp;gt; org.openfaces.component.select.SelectBooleanCheckbox&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.util.FacesUtil&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;ol&gt;&lt;li&gt;Renamed class: &lt;span style="font-family: 'courier new',courier;"&gt;FacesUtil -&amp;gt; Faces&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Replaced &lt;span style="font-family: 'courier new',courier;"&gt;getRequestMapValue(String varName)&lt;/span&gt; method with &lt;span style="font-family: 'courier new',courier;"&gt;var(String varName)&lt;/span&gt; method, which is more universal as it can fetch not just request-scope variables.&lt;/li&gt;&lt;li&gt;Renamed method: &lt;span style="font-family: 'courier new',courier;"&gt;getRequestParameterMapValue(String paramName)&lt;/span&gt; -&amp;gt; &lt;span style="font-family: 'courier new',courier;"&gt;r&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;equestParam(String paramName)&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Removed &lt;span style="font-family: 'courier new',courier;"&gt;getRequestParameterMapValueAsDate(String paramName)&lt;/span&gt; method. Its invocations should now be replaced with &lt;span style="font-family: 'courier new',courier;"&gt;requestParam(String paramName, Date.class)&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.table&lt;/span&gt; package classes&lt;/td&gt;&lt;td&gt;&lt;p&gt;The following classes were renamed to match the appropriate tag names:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableColumnGroup -&amp;gt; ColumnGroup&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableColumn -&amp;gt; Column&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;DynamicTableColumn -&amp;gt; DynamicColumn&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableColumns -&amp;gt; Columns&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableCell -&amp;gt; Cell&lt;/span&gt;,&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;TableRow -&amp;gt; Row&lt;/span&gt; .&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;The appropriate &lt;span style="font-family: 'courier new',courier;"&gt;COMPONENT_TYPE&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;COMPONENT_FAMILY&lt;/span&gt; strings were changed accordingly.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.action.PopupMenu&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.action.MenuItem&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.action.MenuSeparator&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;Moved all classes from package: &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.action&lt;/span&gt; &lt;span&gt;to package&lt;/span&gt; &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.command&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Other changes:&lt;/p&gt;&lt;ul style="padding-left: 30px; "&gt;&lt;li&gt;Changed &lt;span style="font-family: 'courier new',courier;"&gt;event&lt;/span&gt; attribute usage for &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:confirmation&amp;gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:popupMenu&amp;gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:ajax&amp;gt;&lt;/span&gt; (former &lt;span style="font-family: 'courier new',courier;"&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:reloadComponents&amp;gt;&lt;/span&gt;) tags: now there shouldn't be &lt;span style="font-family: 'courier new',courier;"&gt;"on"&lt;/span&gt; prefix in event names, e.g. you should use &lt;span style="font-family: 'courier new',courier;"&gt;"click"&lt;/span&gt; instead of &lt;span style="font-family: 'courier new',courier;"&gt;"onclick"&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Renamed the &lt;span style="font-family: 'courier new',courier;"&gt;dayTable&lt;/span&gt; parameter to &lt;span style="font-family: 'courier new',courier;"&gt;timetable&lt;/span&gt; in &lt;span style="font-family: 'courier new',courier;"&gt;oncreate&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;onedit&lt;/span&gt; event handlers of &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:customEventEditor&amp;gt;&lt;/span&gt; tag. See the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/daytable.html#DayTable-CustomEventEditor"&gt;Custom Event Editor&lt;/a&gt; section in the DayTable component documentation.&lt;/li&gt;&lt;li&gt;Renamed enumeration: &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.HorizontalAlignment&lt;/span&gt; -&amp;gt; &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.Side&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Renamed enumeration &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.timetable.HorizontalAlignment&lt;/span&gt; to &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.HorizontalAlignment&lt;/span&gt; and renamed its values as follows:&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: 'courier new',courier;"&gt;HorizontalAlignment.LEF&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;T -&amp;gt;&lt;/span&gt; &lt;span style="font-family: 'courier new',courier;"&gt;HorizontalAlignment.LEFT_OUTSIDE&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'courier new',courier;"&gt;HorizontalAlignment.RIG&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;HT -&amp;gt; Ho&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;rizontalAlignment.RIGHT_OUTSIDE&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'courier new',courier;"&gt;HorizontalAlignment.LEFT_EDG&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;E -&amp;gt; Ho&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;rizontalAlignment.LEFT&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'courier new',courier;"&gt;HorizontalAlignment.RIGHT_EDGE -&amp;gt; HorizontalAlignment.RIGHT&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Renamed enumeration &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.timetable.HorizontalAlignment&lt;/span&gt; to &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.HorizontalAlignment&lt;/span&gt; and renamed its values as follows:&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: 'courier new',courier;"&gt;VerticalAlignment.TOP_EDGE -&amp;gt; VerticalAlignment.TOP&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'courier new',courier;"&gt;VerticalAlignment.BOTTOM_EDGE -&amp;gt; VerticalAlignment.BOTTOM&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Changed values of &lt;span style="font-family: 'courier new',courier;"&gt;verticalAlignment&lt;/span&gt; attribute of &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:eventPreview&amp;gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:eventArea&amp;gt;&lt;/span&gt; tags: &lt;span style="font-family: 'courier new',courier;"&gt;"topEdge" -&amp;gt; "top"&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;"bottomEdge" -&amp;gt; "bottom"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Changed values of &lt;span style="font-family: 'courier new',courier;"&gt;horizontalAlignment&lt;/span&gt; attribute of &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:eventPreview&amp;gt;&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:eventArea&amp;gt;&lt;/span&gt; tags: &lt;span style="font-family: 'courier new',courier;"&gt;"left" -&amp;gt; "leftOutside"&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;"right" -&amp;gt; "rightOutside"&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;"&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;leftEdge" -&amp;gt; "left"&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;"rightEdge" -&amp;gt; "right"&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The default values for the Spinner's &lt;span style="font-family: 'courier new',courier;"&gt;minValue&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;maxValue&lt;/span&gt; attributes are now unspecified by default making it possible to enter a number without range restrictions by default. If you'd like to retain the old default range of 0..100, specify &lt;span style="font-family: 'courier new',courier;"&gt;minValue="0"&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;maxValue="100"&lt;/span&gt; attributes explicitly.&lt;/li&gt;&lt;/ul&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style="padding-left: 30px; "&gt;&lt;span style="font-size: 14pt;"&gt;Migrating to the New Ajax API&lt;/span&gt;&lt;/h2&gt;&lt;p style="padding-left: 30px; "&gt;The component names changing affected both tag and attributes names. The JS function names have been also changed. The instructions below will help you to migrate to the new API:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;1. Rename &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;&lt;/span&gt;&lt;tt&gt;&lt;span style="font-family: 'courier new',courier;"&gt;o:reloadComponents&amp;gt;&lt;/span&gt;&lt;/tt&gt; tag name to &lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;&lt;/span&gt;&lt;tt&gt;&lt;span style="font-family: 'courier new',courier;"&gt;o:ajax&amp;gt;&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;2. Rename attributes and make changes in their values as follows:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table border="1" cellpadding="3" cellspacing="0" style="border: 1px solid #000000; width: 100%; padding-left: 30px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;Old attribute name&lt;/th&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;New attribute name&lt;/th&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;Value syntax change&lt;/th&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;Old value example&lt;/th&gt;&lt;th align="center" style="background-color:#6690BC;" valign="middle"&gt;New value example&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;componentIds&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;tt&gt;render&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;space delimited instead of comma delimited&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: courier new,courier;"&gt;"totalInput, saveButton"&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: courier new,courier;"&gt;"totalInput saveButton"&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;submittedComponentIds&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;tt&gt;execute&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;space delimited instead of comma delimited&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: courier new,courier;"&gt;"form:window, form:dropDown"&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: courier new,courier;"&gt;"form:window form:dropDown"&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;actionListener&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;tt&gt;listener&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;action&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;– (use &lt;tt&gt;listener&lt;/tt&gt; &lt;span style="font-family: times new roman,times;"&gt;&lt;/span&gt;instead)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;requestDelay&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;tt&gt;delay&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;event&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;tt&gt;event&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;event name (without "on" prefix)&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: courier new,courier;"&gt;"onclick"&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family: courier new,courier;"&gt;"click"&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family: courier new,courier;"&gt;disableDefault&lt;/span&gt;&lt;/td&gt;&lt;td&gt;– (now works automatically)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Here's an example of migrating to the new tag API.&lt;br/&gt;Old-style code:&lt;/p&gt;&lt;div class="code panel" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; padding-left: 30px; "&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&lt;br/&gt;&amp;lt;h:inputText id=&lt;span class="code-quote"&gt;"input"&lt;/span&gt;&amp;gt;&lt;br/&gt;    &amp;lt;o:reloadComponents event=&lt;span class="code-quote"&gt;"onkeypress"&lt;/span&gt; componentIds=&lt;span class="code-quote"&gt;"counter"&lt;/span&gt;&lt;br/&gt;        submittedComponentIds=&lt;span class="code-quote"&gt;"inputStep, checkboxIncrease"&lt;/span&gt; requestDelay=&lt;span class="code-quote"&gt;"500"&lt;/span&gt;&lt;br/&gt;        action=&lt;span class="code-quote"&gt;"#{TableTestBean.incrementCounter}"&lt;/span&gt;/&amp;gt;&lt;br/&gt;&amp;lt;/h:inputText&amp;gt;&lt;br/&gt;...&lt;br/&gt; &lt;span class="code-keyword"&gt;public&lt;/span&gt; void incrementCounter() {&lt;br/&gt;        counter++;&lt;br/&gt; }&lt;br/&gt;...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;New-style code:&lt;/p&gt;&lt;div class="code panel" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; padding-left: 30px; "&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&lt;br/&gt;&amp;lt;h:inputText id=&lt;span class="code-quote"&gt;"input"&lt;/span&gt;&amp;gt;&lt;br/&gt;    &amp;lt;o:ajax event=&lt;span class="code-quote"&gt;"keypress"&lt;/span&gt; render=&lt;span class="code-quote"&gt;"counter"&lt;/span&gt;&lt;br/&gt;        submit=&lt;span class="code-quote"&gt;"inputStep checkboxIncrease"&lt;/span&gt; delay=&lt;span class="code-quote"&gt;"500"&lt;/span&gt;&lt;br/&gt;        listener=&lt;span class="code-quote"&gt;"#{TableTestBean.incrementCounter}"&lt;/span&gt;/&amp;gt;&lt;br/&gt;&amp;lt;/h:inputText&amp;gt;&lt;br/&gt;...&lt;br/&gt; &lt;span class="code-keyword"&gt;public&lt;/span&gt; void incrementCounter(ActionEvent actionEvent) {&lt;br/&gt;        counter++;&lt;br/&gt; }&lt;br/&gt;...&lt;/pre&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;3. Client-side API has also been changed to match the appropriate API in JSF 2.0 more closely. Replace &lt;tt&gt;O$.reloadComponents(componentIds, options)&lt;/tt&gt; JS function invocations with &lt;tt&gt;O$.ajax.request(source, event, options)&lt;/tt&gt;function with the following changes:&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="padding-left: 30px; "&gt;- The list of components to be reloaded that was formerly passed as the first parameter has changed its type from array to a space delimited string and it should now be passed inside of the options parameter object as a &lt;span style="font-family: 'courier new',courier;"&gt;render&lt;/span&gt; field.&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;- The function now receives three parameters instead of two. The first parameter should now refer to the to the element that initiated the request, and the second parameter should refer the the event that has triggered the request. These first two parameters are optional and you can pass &lt;span style="font-family: courier new,courier;"&gt;null&lt;/span&gt; values if required. The third parameter is the options array as it was before, though there are some option changes as outlined below.&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;- The &lt;span style="font-family: 'courier new',courier;"&gt;submittedComponentIds&lt;/span&gt; parameter in &lt;span style="font-family: 'courier new',courier;"&gt;options&lt;/span&gt; object has been renamed to the &lt;span style="font-family: 'courier new',courier;"&gt;execute&lt;/span&gt; parameter and changed its type from an array to a space delimited string.&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;- The &lt;span style="font-family: 'courier new',courier;"&gt;action&lt;/span&gt; parameter in options object is now replaced with the &lt;span style="font-family: 'courier new',courier;"&gt;listener&lt;/span&gt; parameter, and the referred server-side method should receive one paraemter of type&lt;span style="font-family: 'courier new',courier;"&gt;javax.faces.event.ActionEvent&lt;/span&gt; like with the &lt;span style="font-family: 'courier new',courier;"&gt;listener&lt;/span&gt; attribute of &amp;lt;o:ajax&amp;gt; tag mentioned above.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Here's an example of migrating to the new client-side API.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Old-style code:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;input type="button" onclick="O$.reloadComponents(['form:panel1'], {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    action: 'MyBean.doAction',&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    submittedComponentIds: ['form:field1', 'form:field2']}); return false;"/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;public void doAction() {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;     // execute the action&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;New-style code:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;input type="button" onclick="O$.ajax.request(this, event, {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    render: 'form:panel1',&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    listener: 'MyBean.doAction',&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    execute: 'form:field1 form:field2'}); return false;"/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;public void doAction(ActionEvent event) {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;   // execute the action&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;strong&gt;&lt;span style="font-size: 14pt;"&gt;Migrating to the New Filtering API&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;All of the filtering-related attributes were removed from &lt;tt&gt;&amp;lt;o:column&amp;gt;&lt;/tt&gt; tag and should now be specified inside of one of the new filter tags, depending on type of the filter (formerly specified with the&lt;tt&gt;filterKind&lt;/tt&gt; attribute). There's the new &lt;tt&gt;"subHeader"&lt;/tt&gt; facet in &lt;tt&gt;&amp;lt;o:column&amp;gt;&lt;/tt&gt; tag, where the filter tag should be placed. Here are the instructions that you can use to migrate to the new API:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;1. Place the filter tag inside of the column's &lt;tt&gt;"subHeader"&lt;/tt&gt; facet depending on a value of &lt;tt&gt;filterKind&lt;/tt&gt; attribute and remove the &lt;tt&gt;filterKind&lt;/tt&gt; attribute from column tag as follows:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;table class="confluenceTable" style="padding-left: 30px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;&lt;tt&gt;filterKind&lt;/tt&gt; value&lt;/th&gt;&lt;th class="confluenceTh"&gt;Tag name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;"searchField"&lt;/tt&gt; or no &lt;tt&gt;filterKind&lt;/tt&gt; attribute&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;&amp;lt;o:inputTextFilter&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;"dropDownField"&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;&amp;lt;o:dropDownFieldFilter&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;"comboBox"&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;&amp;lt;o:comboBoxFilter&amp;gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;2. Move all of the filtering-related attributes from the column tag to the filter tag and rename them as follows:&lt;/p&gt;&lt;table class="confluenceTable" style="padding-left: 30px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;Old attribute name&lt;/th&gt;&lt;th class="confluenceTh"&gt;New attribute name&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterExpression&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;expression&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterValue&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;value&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterValues&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;options&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterPromptText&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;promptText&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterPromptTextStyle&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;promptTextStyle&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;filterPromptTextClass&lt;/tt&gt;&lt;/td&gt;&lt;td class="confluenceTd"&gt;&lt;tt&gt;promptTextClass&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="padding-left: 30px; "&gt;Here's an example of migrating to the new API.&lt;br/&gt;Old-style code:&lt;/p&gt;&lt;div class="code panel" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; padding-left: 30px; "&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&lt;br/&gt;&amp;lt;o:column filterKind=&lt;span class="code-quote"&gt;"dropDownField"&lt;/span&gt; filterExpression=&lt;span class="code-quote"&gt;"#{product.category}"&lt;/span&gt; filterValues=&lt;span class="code-quote"&gt;"#{Products.categories}"&lt;/span&gt;&amp;gt;&lt;br/&gt;...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;New-style code:&lt;/p&gt;&lt;div class="code panel" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; padding-left: 30px; "&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&lt;br/&gt;&amp;lt;o:column&amp;gt;&lt;br/&gt;    &amp;lt;f:facet name=&lt;span class="code-quote"&gt;"subHeader"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;o:dropDownFieldFilter expression=&lt;span class="code-quote"&gt;"#{product.category}"&lt;/span&gt; options=&lt;span class="code-quote"&gt;"#{Products.categories}"&lt;/span&gt;/&amp;gt;&lt;br/&gt;    &amp;lt;/f:facet&amp;gt;&lt;br/&gt;...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3. &lt;span style="color: gray;"&gt;[Required if you are using custom data providing or filter criterion classes in Java code]&lt;/span&gt;&lt;/p&gt;&lt;div class="panelMacro" style="padding-left: 30px; "&gt; &lt;/div&gt;&lt;p style="padding-left: 30px; "&gt;3.1. The type of the &lt;span style="font-family: 'courier new',courier;"&gt;filterCriteria&lt;/span&gt; request-scope variable was changed from &lt;span style="font-family: 'courier new',courier;"&gt;List&lt;/span&gt; to &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.filter.&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;CompositeFilterCriterion&lt;/span&gt;. The&lt;span style="font-family: 'courier new',courier;"&gt;CompositeFilterCriterion&lt;/span&gt; class has the &lt;span style="font-family: 'courier new',courier;"&gt;getCriteria()&lt;/span&gt; method that returns a list of criterion objects.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.2. The &lt;span style="font-family: 'courier new',courier;"&gt;EmptyFilterCriterion&lt;/span&gt;, &lt;span style="font-family: 'courier new',courier;"&gt;NonEmptyFilterCriterion&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;TextFilterCriterion&lt;/span&gt; classes were replaced with a generic&lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.filter.ExpressionFilterCriterion&lt;/span&gt; class, that is parameterized with filter condition to address different filtering scenarios (see the &lt;span style="font-family: 'courier new',courier;"&gt;getCondition()&lt;/span&gt;and &lt;span style="font-family: 'courier new',courier;"&gt;isInverse()&lt;/span&gt; methods). See the following items for detilas.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.3. The usage &lt;span style="font-family: 'courier new',courier;"&gt;getColumnId()&lt;/span&gt; method of &lt;span style="font-family: 'courier new',courier;"&gt;TextFilterCriterion&lt;/span&gt; is now replaced with the usage of &lt;span style="font-family: 'courier new',courier;"&gt;getExpressionStr()&lt;/span&gt; method of &lt;span style="font-family: 'courier new',courier;"&gt;ExpressionFilterCriterion&lt;/span&gt; class, and it now returns filter's expression string instead of column id. Replacement of column Id with filter's expression string is required because a filter is not required to be placed inside of table's column now, and can even be placed outside of the table, hence filter's expression is now the filter's identifier when using the custom data providing mode. So besides replacing &lt;span style="font-family: 'courier new',courier;"&gt;getColumnId()&lt;/span&gt; invocations with &lt;span style="font-family: 'courier new',courier;"&gt;getExpressionStr()&lt;/span&gt;, be sure to specify the appropriate string (a-la column id) in the filter's &lt;span style="font-family: 'courier new',courier;"&gt;expression&lt;/span&gt; attribute.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.4. The usage of getText() method of TextFilterCriterion is now replaced with usage of getArg1() method. Unlike the getText() method which returns java.lang.String, getArg1() returns java.lang.Object to allow non-string comparisons, so you should convert the result of invoking the getArg1() method using the toString() method to match the old behavior.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;3.5. The checks for instances of &lt;span style="font-family: 'courier new',courier;"&gt;EmptyFilterCriterion&lt;/span&gt; and &lt;span style="font-family: 'courier new',courier;"&gt;NonEmptyFilterCriterion&lt;/span&gt; classes should now be replaced with checks of the &lt;span style="font-family: 'courier new',courier;"&gt;ExpressionFilterCriterion&lt;/span&gt;'s condition and inverse properties. The condition is an enumeration of &lt;span style="font-family: 'courier new',courier;"&gt;org.openfaces.component.filter.FilterCondition&lt;/span&gt; type, which distinguishes between different types of filtering, and in particular the value of &lt;span style="font-family: 'courier new',courier;"&gt;FilterCondition.EMPTY&lt;/span&gt; means that empty records should be accepted (and this is a replacement for checking the &lt;span style="font-family: 'courier new',courier;"&gt;EmptyFilterCriterion&lt;/span&gt; class instance), and if&lt;span style="font-family: 'courier new',courier;"&gt;isInverse()&lt;/span&gt; method returns true at the same time this is the case for filtering the non-empty records (and this is a replacement for checking the &lt;span style="font-family: 'courier new',courier;"&gt;NonEmptyFilterCriterio&lt;/span&gt;&lt;span style="font-family: 'courier new',courier;"&gt;n&lt;/span&gt; class instance).&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Here's a simple example of how the appropriate code is to be changed as a result of this change.&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Old-style code:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:column id="name" filterKind="searchField"&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;List&amp;lt;ColumnFilterCriterion&amp;gt; criteria = (List) Faces.var("filterCriteria");&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;for (ColumnFilterCriterion criterion: criteria) {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    String columnId = criterion.getColumnId();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    String searchString = ((TextFilterCriterion)criterion).getText();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;New-style code:&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;&amp;lt;o:column&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    &amp;lt;f:facet name="subHeader"&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;        &amp;lt;o:inputTextFilter expression="name"/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;    &amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;CompositeFilterCriterion criteria = Faces.var("filterCriteria", CompositeFilterCriterion.class);&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;for (FilterCriterion c: criteria.getCriteria) {&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;     ExpressionFilterCriterion criterion = (ExpressionFilterCriterion) c;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;     String columnId = criterion.getExpressionStr();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;     String searchString = criterion.getArg1().toString();&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;&lt;span style="font-family: 'courier new',courier;"&gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;Please see the "Handling Large Datasets" section in the DataTable documentation for the general description of the new API.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;4. &lt;span style="color: gray;"&gt;[Optional]&lt;/span&gt; Drop-down field filters are now configured to provide input suggestions by default, though you can turn this behavior off if you'd like the filters to behave exactly as before. This can be done by declaring the following attributes on the &lt;tt&gt;&amp;lt;o:dropDownFieldFilter&amp;gt;&lt;/tt&gt; tag: &lt;tt&gt;suggestionMode="none" autoComplete="false"&lt;/tt&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;5. &lt;span style="color: gray;"&gt;[Optional]&lt;/span&gt; Input text filters now automatically perform filtering as the user types in the field. This behavior can be turned off to match the old behavior by specifying the following attribute for&lt;tt&gt;&amp;lt;o:inputTextFilter&amp;gt;&lt;/tt&gt; tag: &lt;tt&gt;autoFilterDelay="-1"&lt;/tt&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="padding-left: 30px; "&gt;6. &lt;span style="color: #808080;"&gt;[Optional]&lt;/span&gt; The default filtering condition for non-string values is now &lt;span style="font-family: 'courier new',courier;"&gt;"equals"&lt;/span&gt; instead of &lt;span style="font-family: 'courier new',courier;"&gt;"contains"&lt;/span&gt;. If you'd like to retain the old behavior of always searching by substring anyway (e.g. if you'd like for filtering integer values "1" to match both "1" and "10"), declare the &lt;span style="font-family: 'courier new',courier;"&gt;condition="contains"&lt;/span&gt; attribute on the appropriate filter tags.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:098d0872-35b0-47ac-b27d-cd9cb539faad] --&gt;</description>
      <pubDate>Thu, 04 Mar 2010 18:28:25 GMT</pubDate>
      <author>forum-admin@teamdev.com</author>
      <guid>http://support.teamdev.com/docs/DOC-1172</guid>
      <dc:date>2010-03-04T18:28:25Z</dc:date>
      <clearspace:dateToText>6 months, 1 week ago</clearspace:dateToText>
    </item>
    <item>
      <title>OpenFaces FAQ</title>
      <link>http://support.teamdev.com/docs/DOC-1106</link>
      <description>&lt;!-- [DocumentBodyStart:d8a9a441-1d95-4b68-a983-561ad017df88] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;General&lt;/a&gt; | &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;Licensing&lt;/a&gt; | &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;Support Policy&lt;/a&gt; | &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;Project Infrastructure&lt;/a&gt; | &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;Compatibility&lt;/a&gt; | &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;Ajax&lt;/a&gt; | &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;DataTable and TreeTable&lt;/a&gt; | &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;TabbedPane and TabSet&lt;/a&gt; |  &lt;a class="jive-link-anchor-small" href="/docs/DOC-1106"&gt;Miscellaneous&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="generaltab"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;General&lt;/h3&gt;&lt;p&gt;OpenFaces is a JSF library that provides an extended set of advanced highly customizable JSF components, an Ajax framework and a validation framework. It extends the standard set of UI components with such sophisticated widgets as TreeTable, DataTable, DayTable, SuggestionField, DateChooser, Chart, and many others. Besides the components, OpenFaces has an Ajax framework and a validation framework. Ajax framework allows adding Ajax-based interaction to the pages where Ajax capabilities built into components are not enough, and Validation framework shifts the traditional JSF validation to the client side, provides new validators and a new kind of error presentation.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Roadmap&lt;/span&gt;&lt;/h4&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;To learn when the next version of OpenFaces will come out and what new features or components will it have, see the OpenFaces &lt;a class="jive-link-wiki-small" href="http://support.teamdev.com/docs/DOC-1107"&gt;Roadmap&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Quirks and Standards Compliance modes&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;The OpenFaces components were tested to work in both Quirks and Standards Compliance modes.&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="Licensing"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Licensing&lt;/h3&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt;"&gt;I see that OpenFaces is dual licensed, can I use OpenFaces in a commercial project for free?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Yes you are welcome to use OpenFaces in commercial projects for free, like any other LGPL licensed libraries. The additional commercial license doesn't narrow the volume of OpenFaces users, but actually increases it, since it provides an additional way to use OpenFaces for companies that have a policy of not using open-source licensed software.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 12pt;"&gt;OpenFaces Licensing Models&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;OpenFaces is licensed under a dual license model. The functionality of the product is the same for both licensing options.&lt;br/&gt;You can license OpenFaces binaries along with source code packages under the terms and conditions of a &lt;a class="jive-link-external-small" href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt"&gt;GNU LESSER GENERAL PUBLIC LICENSE&lt;/a&gt; (Version 2.1, February 1999).&lt;br/&gt;Alternatively you can opt for a commercial license for OpenFaces under the terms and conditions of the &lt;a class="jive-link-external-small" href="http://openfaces.org/licensing.html#"&gt;Product License Agreement&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;&lt;span style="font-size: 12pt;"&gt;Open Source License Benefits&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;It is free of charge.&lt;/p&gt;&lt;h4&gt;&lt;span style="font-size: 12pt;"&gt;Open Source License Restrictions&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;This license does not restrict using OpenFaces in your proprietary software, though it has some peculiarities. As it follows from LGPL conditions, you may freely copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.&lt;/p&gt;&lt;p&gt;We do administer OpenFaces support community, but we cannot guarantee our feedback to all your posts.&lt;/p&gt;&lt;h4&gt;&lt;span style="font-size: 12pt;"&gt;Commercial License Benefits&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;The Commercial License exempts you from all the restrictions of the open-source license. This license is issued to a person or company and the license contains your name or the name of your company. Having once purchased the Commercial License you can perpetually use OpenFaces binaries in all your projects without any annual renewals, subscriptions or additional fees to us.&lt;/p&gt;&lt;p&gt;In addition to the license you'll receive a personal yearlong support via direct email with our Software Engineers and access to JIRA to track progress for your issues.&lt;/p&gt;&lt;p&gt;We guarantee our feedback to your support requests within 1 business day.&lt;/p&gt;&lt;h4&gt;&lt;span style="font-size: 12pt;"&gt;Commercial License Restrictions&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;Commercial License doesn't govern source code issues.&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="SupportPolicy"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Support Policy&lt;/h3&gt;&lt;h4&gt;Free Support&lt;/h4&gt;&lt;p&gt;Free support is provided via our &lt;a class="jive-link-external-small" href="http://support.teamdev.com/openfaces/"&gt;support forum&lt;/a&gt;. It is constantly watched and administered by our support engineers, so we guarantee that none of your messages remains unnoticed. Though we do not guarantee that we will answer all the posts.&lt;/p&gt;&lt;h4&gt;Paid Support&lt;/h4&gt;&lt;p&gt;If you need to secure our feedback, you can consider our paid support. This will ensure our feedback to your request within one business day. It covers bugfixes and some assistance with the use of OpenFaces.&lt;/p&gt;&lt;p&gt;All holders of commercial licenses get one year of this support automatically. If you use Openfaces under LGPL, but you are interested in getting our paid support, please send your request to &lt;a class="jive-link-email-small" href="mailto:licensing@teamdev.com"&gt;licensing@teamdev.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="Infrastructure"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Project Infrastructure&lt;/h3&gt;&lt;h4&gt;OpenFaces web site&lt;/h4&gt;&lt;p&gt;At &lt;a class="jive-link-external-small" href="http://www.openfaces.org/"&gt;&lt;span&gt;OpenFaces web site&lt;/span&gt;&lt;/a&gt; you can find the detailed info about the project including demos, source codes, binaries and documentation, download the latest stable, nightly build or get the builds history. Refer to the readme.txt files in the respective packages for building instructions.&lt;/p&gt;&lt;h4&gt;OpenFaces Community Forum&lt;/h4&gt;&lt;p&gt;&lt;a class="jive-link-external-small" href="/openfaces"&gt;OpenFaces Community forum&lt;/a&gt; is mainly designed for sharing experiences, ideas, thoughts and similar OpenFaces-related discussions.&lt;/p&gt;&lt;h4&gt;JIRA Issue Tracking System&lt;/h4&gt;&lt;p&gt;If you want to submit a bug or request a feature, please use &lt;a class="jive-link-external-small" href="http://requests.openfaces.org/"&gt;JIRA Issue Tracking System&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;SVN Version Control System&lt;/h4&gt;&lt;p&gt;You can check out the entire OpenFaces project including the library itself, the tests and the demos from our  &lt;span&gt;SVN&lt;/span&gt;. The current development version of the project is available at the following URL: &lt;a class="jive-link-external-small" href="http://svn.openfaces.org/trunk"&gt;http://svn.openfaces.org/trunk&lt;/a&gt;. This project can be built in three ways: using IntelliJ Idea IDE, Eclipse IDE, or Ant build tool. See the &lt;span&gt;Building OpenFaces.html&lt;/span&gt; document in project's root directory for instructions.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Documentation&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;The &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/index.html"&gt;OpenFaces developer's guide&lt;/a&gt;, the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/tagReference/index.html"&gt;tag library documentation&lt;/a&gt; and the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/apiReference"&gt;API reference&lt;/a&gt; are available online and are included in the OpenFaces binary distribution packages that can be found at the &lt;a class="jive-link-external-small" href="http://www.openfaces.org/downloads.html"&gt;OpenFaces downloads page&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Forum&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces forum is available at the following address: &lt;a class="jive-link-community-small" href="/community/openfaces" title="OpenFaces is an open-source library of AJAX-powered JSF components, an Ajax framework and a client-side validation framework. OpenFaces is based on the set of JSF components formerly known as QuipuKit library. It contains fully revised codebase of QuipuKit and introduces many new components and features."&gt;http://support.teamdev.com/community/openfaces&lt;/a&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="Compatibility"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Compatibility&lt;/h3&gt;&lt;h4&gt;Supported JSF implementations&lt;/h4&gt;&lt;p&gt;OpenFaces was tested to work with the following JSF implementations:&lt;/p&gt;&lt;ul&gt;&lt;li type="ul"&gt;&lt;p&gt;Sun Reference Implementation (Mojarra) 1.2&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Apache MyFaces Implementation 1.2&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;Supported application servers&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces was tested to work with the following application servers:&lt;/p&gt;&lt;ul&gt;&lt;li type="ul"&gt;&lt;p&gt;Apache Tomcat 6.0&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;IBM WebSphere 6.0 -6.1&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Bea WebLogic 9.2&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;JBoss 4.0 - 4.2&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Glassfish&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Jetty 6.1.x&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;JSR-168 Portlets support&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces can be used to develop JSR-168 Portlets. The current version of OpenFaces has been tested to work with the following portal servers:&lt;/p&gt;&lt;ul&gt;&lt;li type="ul"&gt;&lt;p&gt;JBoss Portal 2.4.x and 2.6.x&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;Liferay Portal 4.2.1&lt;/p&gt;&lt;/li&gt;&lt;li type="ul"&gt;&lt;p&gt;JetSpeed 2.0 Portal&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;IDE support&lt;/span&gt;&lt;/h4&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;There is no IDE support in the current version of OpenFaces. We are planning to add support for the popular IDEs in one of the future releases of OpenFaces. To know about our nearest plans, please see the &lt;a class="jive-link-wiki-small" href="http://support.teamdev.com/docs/DOC-1107"&gt;Roadmap&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Compatibility with JBoss Seam&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces components are fully compatible with the JBoss Seam framework. The OpenFaces components have been tested to work with JBoss Seam version 2.0 and 2.1.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Compatibility with RichFaces&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces library is fully compatible with JBoss RichFaces library version 3.3.1 including its components and Ajax framework.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Compatibility with Tomahawk&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces and Tomahawk components can be used in the same application. However, there are some issues with some of the Tomahawk components. Most of the compatibility problems take place in cases when embedding Tomahawk components inside of OpenFaces components.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Compatibility with Trinidad&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces and Trinidad are not fully compatible yet. There are some issues when the OpenFaces and Trinidad components are used within one page.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Compatibility with ICEfaces&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;OpenFaces and ICEfaces components are not compatible currently.&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="Ajax"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Ajax&lt;/h3&gt;&lt;h4&gt;&lt;span&gt;Some of the content disappears after performing an Ajax request&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;If some of the content of ajaxable OpenFaces components disappears after performing Ajax request, the reason might be that you use the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;f:loadBundle&amp;gt;&lt;/span&gt; component within the OpenFaces Ajax-enabled components. The solution is to use the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/loadbundle.html"&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:loadBundle&amp;gt;&lt;/span&gt;&lt;/a&gt; component instead.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Showing Ajax progress message when Ajax4jsf request is in progress&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;When any OpenFaces Ajax request is in progress, the "Loading..." message appears in the upper-right corner of the screen. There is no possibility to display this message while Ajax4jsf's Ajax request is in progress. And there is no possibility to display the a4j:status component while an Ajax request in OpenFaces components is being executed. However, you can customize the Ajax progress message for the whole application by using the &lt;span style="font-family: 'courier new', courier;"&gt;org.openfaces.ajaxMessageHTML&lt;/span&gt; application scope parameter in web.xml or for the particular page by using the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:defaultProgressMessage&amp;gt;&lt;/span&gt; tag. For more details, please see the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/ajax-support.html#AjaxSupport-SpecifyingAjaxProgressMessage"&gt;documentation&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Disabling OpenFaces Ajax progress message&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;There is no dedicated feature not to show OpenFaces Ajax progress message, however it is possible to utilize features of customizing its appearance for achieving this effect. The idea is to customize the progress message to be invisible using the &lt;span style="font-family: 'courier new', courier;"&gt;"display: none"&lt;/span&gt; CSS declaration. You can either customize the Ajax progress message for the whole application by using the &lt;span style="font-family: 'courier new', courier;"&gt;org.openfaces.ajaxMessageHTML&lt;/span&gt; application scope parameter in web.xml or for the particular page by using the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:defaultProgressMessage&amp;gt;&lt;/span&gt; tag. For more details, please see the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/ajax-support.html#AjaxSupport-SpecifyingAjaxProgressMessage"&gt;documentation&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Here's an example of disabling Ajax progress message using the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:ajaxSettings&amp;gt;&lt;/span&gt; tag:&lt;/p&gt;&lt;!--[CodeBlockStart:93333ef2-5267-40bc-bb4d-42ee507f7e1b]--&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;&amp;lt;o:ajaxSettings&amp;gt;
  &amp;lt;f:facet name="progressMessage"&amp;gt;
    &amp;lt;o:defaultProgressMessage style="display: none;"/&amp;gt;
  &amp;lt;/f:facet&amp;gt;
&amp;lt;/o:ajaxSettings&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;!--[CodeBlockEnd:93333ef2-5267-40bc-bb4d-42ee507f7e1b]--&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="DataTableTreeTable"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;DataTable and TreeTable&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span&gt;Number of filtered rows in the DataTable&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;You can get the total number of filtered rows using the &lt;span style="font-family: 'courier new', courier;"&gt;getTotalRowCount()&lt;/span&gt; method of the DataTable component. You should use the component binding to be able to use this method from your backing bean.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Number of filtered rows in the TreeTable&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;At the present, there is no public API to get the total number of filtered rows for the TreeTable component. However, you can use the &lt;span style="font-family: 'courier new', courier;"&gt;getRowCount()&lt;/span&gt; method. This method returns the number of rows that are actually loaded to the client. If you have the &lt;strong&gt;&lt;span style="font-family: 'courier new', courier;"&gt;preloadedNodes&lt;/span&gt;&lt;/strong&gt; attribute set to "all", the &lt;span style="font-family: 'courier new', courier;"&gt;getRowCount()&lt;/span&gt; method will return the number of filtered rows.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Placing one DataTable/TreeTable into another one&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;There is a &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/index.html#Index-KnownIssues"&gt;known issue&lt;/a&gt; that the DataTable and TreeTable components cannot be used inside DataTable, TreeTable or any other JSF components that replicate their child components during rendering. We are going to add support for such configurations in one of the future releases.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;The row where an event occurs for the server-side event handlers&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;Server-side event handlers can be aware of the row where an event occurs by checking the request-scope variables that refer to the current row data object and current row index. See &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/datatable.html#DataTable-RequestScopeVariables"&gt;the appropriate documentation section&lt;/a&gt;. You can use the &lt;span style="font-family: 'courier new', courier;"&gt;org.openfaces.util.Faces.var&lt;/span&gt; utility method if you need to retrieve a request-scope variable from a backing bean.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Duplicate component IDs exception&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;In some situations in Facelets application with Sun reference implementation 1.2, you can get the "duplicate component IDs" exception in the pages with the DataTable or TreeTable. This is actually not OpenFaces related problem and it can be reproduced in the application without OpenFaces at all. You can work around this problem by setting the &lt;strong&gt;&lt;span style="font-family: 'courier new', courier;"&gt;id&lt;/span&gt;&lt;/strong&gt; attributes for the all child components of the DataTable or TreeTable.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;The filter components in the DataTable/TreeTable header are too wide&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;This problem can only be seen for filters with the "searchField" filter type. The problem appears on the pages having the "standards" rendering mode, which is triggered by DOCTYPE specified on the first line of your page. The filter's text field in this case is slightly wider than it should be, which results in its right edge intersect its cell's boundaries. You can use on of the following workarounds:&lt;/p&gt;&lt;ul&gt;&lt;li type="ul"&gt;&lt;p&gt;Switch your page to use the "quirks" rendering mode. You can do this either by removing the DOCTYPE declaration from your page, or changing it appropriately, for example as follows:&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--[CodeBlockStart:d9399371-55b8-4307-b216-5061c868df1f]--&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;!--[CodeBlockEnd:d9399371-55b8-4307-b216-5061c868df1f]--&gt;&lt;ul&gt;&lt;li type="ul"&gt;&lt;p&gt;Remain in the "standards" mode but specify the filterRowStyle="padding-right: 20px" for your table. Note that the actual amount of padding required to fix this might depend on the actual configuration of your table.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;Use objects of different types to specify tree structure for the TreeTable component&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;You can specify the objects of different types for different TreeTable levels. First you should define a dynamic tree structure by specifying the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:dynamicTreeStructure&amp;gt;&lt;/span&gt; tag and the &lt;strong&gt;nodeChildren&lt;/strong&gt; attribute. The attribute should be specified as a value-binding expression, which is calculated for each node to retrieve the node's children. You can use the &lt;span style="font-family: 'courier new', courier;"&gt;org.openfaces.util.Faces.var&lt;/span&gt; method to get the current node. Then you should return the node children depending on the current node type.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Expanding only one particular node programmatically&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;You can programmatically specify whether a particular node is collapsed or expanded with its nodeKey. To do so, you should do the following:&lt;/p&gt;&lt;p&gt;1. Bind the &lt;strong&gt;expansionState&lt;/strong&gt; attribute of the TreeTable tag to the variable of &lt;span style="font-family: 'courier new', courier;"&gt;org.openfaces.component.table.ExpansionState&lt;/span&gt; type in the backing bean.&lt;/p&gt;&lt;p&gt;2. Initialize this variable as follows:&lt;/p&gt;&lt;!--[CodeBlockStart:58e3002d-c73d-427e-aa56-50b287eee748]--&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;private ExpansionState myTreeTableExpansionState = new DynamicNodeExpansionState(new AllNodesCollapsed());&lt;/code&gt;&lt;/pre&gt;&lt;!--[CodeBlockEnd:58e3002d-c73d-427e-aa56-50b287eee748]--&gt;&lt;p&gt;3. Use the &lt;span style="font-family: 'courier new', courier;"&gt;setNodeExpanded(TreePath keyPath, boolean expanded)&lt;/span&gt; method to specify whether the node is expanded or collapced. As the first parameter of the &lt;span style="font-family: 'courier new', courier;"&gt;TreePath&lt;/span&gt; class, you should use nodeKey of the required node. The second parameter is the &lt;span style="font-family: 'courier new', courier;"&gt;TreePath&lt;/span&gt; of its parent. For example:&lt;/p&gt;&lt;!--[CodeBlockStart:0470d4c4-9605-43f8-8e3f-f0990c237c64]--&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;myTreeTableExpansionState.setNodeExpanded(new TreePath("message10",null),true);&lt;/code&gt;&lt;/pre&gt;&lt;!--[CodeBlockEnd:0470d4c4-9605-43f8-8e3f-f0990c237c64]--&gt;&lt;p&gt;Here, &lt;span style="font-family: 'courier new', courier;"&gt;"message10"&lt;/span&gt; is a nodeKey of the node that should be expanded and &lt;span style="font-family: 'courier new', courier;"&gt;null&lt;/span&gt; means that it is a root node. Please also see the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/treetable.html#TreeTable-ExpandingandPreloadingNodes"&gt;corresponding documentation section&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Note that if you want to expand the node, for example from the third level, you should expand all its parent nodes first. So you will need to make several &lt;span style="font-family: 'courier new', courier;"&gt;setNodeExpanded&lt;/span&gt; method calls to expand nodes deep in a hierarchy of nodes.&lt;/p&gt;&lt;h4&gt;Pagination in the TreeTable component&lt;/h4&gt;&lt;p&gt;There is no built-in feature to add pagination to the TreeTable component. However, you can still implement similar behavior by implementing your backing bean to provide only the partial tree structure, and changing the provided data set when pressing "next" and "previous" buttons. To do so, you should display the "next" and "previous" buttons in one of the child nodes on the tree branch that you need to have the pagination functionality, for example in the last node of each tree branch. You can use the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:row&amp;gt;&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:cell&amp;gt;&lt;/span&gt; tags to do so (see the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/treetable.html#TreeTable-CustomizingIndividualRowsandCells"&gt;documentation&lt;/a&gt;). In the &lt;span style="font-family: 'courier new', courier;"&gt;nodeChildren&lt;/span&gt; attribute you should provide only the required number of items for the current "page". When the user clicks the "next" or "previous" button, you should reload the TreeTable component by using &lt;span style="font-family: 'courier new', courier;"&gt;O$.ajax.request&lt;/span&gt; JavaScript function (or the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:ajax&amp;gt;&lt;/span&gt; component) and change the currently displayed page number so that your backing bean provide the new set of child nodes. See also the &lt;a class="jive-link-external-small" href="http://openfaces.org/documentation/developersGuide/reloadcomponents.html#ReloadComponents-PureJavaScriptAPI"&gt;documentation&lt;/a&gt; for the &lt;span style="font-family: 'courier new', courier;"&gt;O$.ajax.request&lt;/span&gt; function.&lt;/p&gt;&lt;p&gt;We are planning to implement a built-in TreeTable pagination feature in one of the future releases of OpenFaces.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Change the +/- sign in the TreeTable&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;To change the +/- sign of the TreeTable component, use the &lt;span style="font-family: 'courier new', courier;"&gt;expandedToggleImageUrl&lt;/span&gt; and &lt;span style="font-family: 'courier new', courier;"&gt;collapsedToggleImageUrl&lt;/span&gt; attributes of the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;o:treeTable&amp;gt;&lt;/span&gt; tag. You can see the example in the "Preloading Nodes" TreeTable demo. The source code of the OpenFaces demo is available at the &lt;a class="jive-link-external-small" href="http://openfaces.org/downloads.html"&gt;Download&lt;/a&gt; page.&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="TabbedPaneTabSet"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;TabbedPane and TabSet&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span&gt;The difference between TabSet and TabbedPane&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;The TabbedPane component represents a set of pages for containing other components and a set of tabs for switching between these pages. Given the fact that the TabbedPane is a container, a developer can use different loading modes for loading the pages' content. For example, you can use Ajax to load the content of a TabbedPane page when it is selected for the first time.&lt;/p&gt;&lt;p&gt;The TabSet component is just a set of tabs that look like the ones located inside of the TabbedPane, but without any containers. So the TabSet can be used like a switch enabling a developer to manually adjust the page contents depending on a selected tab.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Different &amp;lt;h:form&amp;gt; components in different TabbedPane's tabs&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;The TabbedPane component should be included in the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;h:form&amp;gt;&lt;/span&gt; component to save its state between page submissions. And it's incorrect to create nested &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;h:form&amp;gt;&lt;/span&gt; components. Therefore it's not possible to include &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;h:form&amp;gt;&lt;/span&gt; component as a child tag for every TabbedPane's tab in the current version of OpenFaces.&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-anchor-small" name="Miscellaneous"&gt;#&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;Miscellaneous&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span&gt;Placing the OpenFaces components in the &amp;lt;h:form&amp;gt; tag&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;In order for OpenFaces components to work properly, they should be placed in the &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;h:form&amp;gt;&lt;/span&gt; or an analogous tag.&lt;/p&gt;&lt;h4&gt;&lt;span&gt;Dynamic creation of the OpenFaces components from Java code&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;The dynamic creation of the OpenFaces components from the Java code is the same as for the standard JSF components. However, there is the &lt;span style="font-family: 'courier new', courier;"&gt;createSubComponents()&lt;/span&gt; method that should be called for the following components after the component is created and its properties are configured: FoldingPanel, TabbedPane, DropDownField, SuggestionField, TableColumn, TreeColumn. The typical creation of the OpenFaces components is shown in the following example:&lt;/p&gt;&lt;!--[CodeBlockStart:335ec656-ec3d-4a37-9fd8-9d0685df7b96]--&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;FacesContext facesContext = FacesContext.getCurrentInstance();
Application application = facesContext.getApplication();
TabbedPane tabbedPane = (TabbedPane) application.createComponent(TabbedPane.COMPONENT_TYPE);
tabbedPane.setId("myTabbedPane");
tabbedPane.setStyleClass("tabbedPane");
...
tabbedPane.createSubComponents(facesContext);&lt;/code&gt;&lt;/pre&gt;&lt;!--[CodeBlockEnd:335ec656-ec3d-4a37-9fd8-9d0685df7b96]--&gt;&lt;h4&gt;&lt;span&gt;Change the width of the DateChooser component&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;Currently, CSS width does not indeed affect the width of the DateChooser. The DateChooser was specifically designed to have the width equal to the pop-up Calendar's width.&lt;/p&gt;&lt;p&gt;However, you can declare the width for a DateChooser with the '&lt;span style="font-family: 'courier new', courier;"&gt;important&lt;/span&gt;' CSS modifier. For example:&lt;/p&gt;&lt;!--[CodeBlockStart:b347b2aa-ef5e-46fc-a9c8-c82704034450]--&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;&amp;lt;o:dateChooser style="width:70px!important;"&amp;gt;&amp;lt;/o:dateChooser&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;!--[CodeBlockEnd:b347b2aa-ef5e-46fc-a9c8-c82704034450]--&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:d8a9a441-1d95-4b68-a983-561ad017df88] --&gt;</description>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">datatable</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">demo</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">faq</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">installation</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">popuplayer</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">openfaces</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">samples</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">treetable</category>
      <pubDate>Thu, 23 Apr 2009 16:37:07 GMT</pubDate>
      <author>forum-admin@teamdev.com</author>
      <guid>http://support.teamdev.com/docs/DOC-1106</guid>
      <dc:date>2009-04-23T16:37:07Z</dc:date>
      <clearspace:dateToText>6 months, 1 week ago</clearspace:dateToText>
    </item>
    <item>
      <title>Help Us Help You</title>
      <link>http://support.teamdev.com/docs/DOC-1108</link>
      <description>&lt;!-- [DocumentBodyStart:c17fd34b-6e86-4eba-900e-69b9e55fc217] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;When you post any problem with OpenFaces, please provide us with the detailed information on your issue. This will let us reproduce the problem and help you fast and efficiently.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Here is a list of information that might be needed from you:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li type="ol"&gt;&lt;p&gt;Your page (JSP or XHTML)&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Whole CSS applied to the page (if the problem somehow related to CSS)&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Backing bean&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Scenario to reproduce the problem&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Are there any JavaScript errors&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Are there any exceptions in the server log&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;OpenFaces version&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;JSF implementation and version&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Application server and version&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Browser&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Your web.xml file&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;Whether or not you are using Facelets, any other component libraries (such Richfaces, Tomahawk), JBoss Seam framework etc. Please also provide us with versions of used libraries&lt;/p&gt;&lt;/li&gt;&lt;li type="ol"&gt;&lt;p&gt;If you are using Portlets, provide us with a portlet.xml file&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Alternatively you may provide us with a sample application, steps to reproduce the problem and the information on the application server used.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:c17fd34b-6e86-4eba-900e-69b9e55fc217] --&gt;</description>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">datatable</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">demo</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">faq</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">installation</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">popuplayer</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">openfaces</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">samples</category>
      <category domain="http://support.teamdev.com/tags?containerType=?14&amp;container=2065">treetable</category>
      <pubDate>Thu, 23 Apr 2009 16:47:55 GMT</pubDate>
      <author>forum-admin@teamdev.com</author>
      <guid>http://support.teamdev.com/docs/DOC-1108</guid>
      <dc:date>2009-04-23T16:47:55Z</dc:date>
      <clearspace:dateToText>1 year, 4 months ago</clearspace:dateToText>
    </item>
  </channel>
</rss>

