Oracle ADF Faces - Previous Release Notes
10.1.3 Early Access
Features New panelHorizontal component

A new panelHorizontal component has been introduced. This lays out its children in a single horizontal row, and has attributes to align itsel f horizontally and vertically.

New selectManyCheckbox component

ADF Faces now includes a selectManyCheckbox component. It offers two layout modes ("horizontal" and "vertical"); like other ADF Faces input components, it supports codeless client-side validation for "required" status, and integrated support for messaging and labels.

New returnActionListener tag

The new < af:returnActionListener > tag allows a dialog or process page to return a value without writing any java code. This tag can also be used to cancel dialog windows. See the tag documentation for more details.

Changes from previous release New attribute on messages component

A new globalOnly attribute has been added to the messages component. By default all messages will be displayed, but if this attribute is set to true, only global messages will be displayed.

Change in objectSpacer rendering

Due to needed support for standards mode HTML rendering, objectSpacer has undergone a behavioral change. With this change, for an objectspacer if the width is not specified, but height specified, a block level HTML element is rendered, thereby introducing a new line effect. If width is specified, then, irrespective of the specified value of height, it may not get shorter than the applicable line-height, in user agents that strictly support standards mode HTML. This change applies to both standards and quirks mode.

disabling selection in tables/hgrids

the tableSelectOne/many components now support the "disabled" attribute. This can be bound to a property on the current row. If this attribute returns "true", then selection will be disabled for that row.

Early Access 19
Features

Major performance improvements

Renderers for many of the core components have been overhauled for major improvements in performance.

selectInputDate and selectInputColor enhancements

selectInputDate and selectInputColor now support "columns" and "maximumLength" attributes, just like inputText, but more interestingly they also supports "action", just like selectInputText. When left alone, the selectInputDate will show a default calendar dialog, but when "action" is set to a "dialog:" outcome provided by a developer, it will launch any custom date dialog the user wishes. The dialog only needs to return a Date object or a String. Similarly, a selectInputColor can be configured to launch a custom color dialog that should return a java.awt.Color object or a String.

resetActionListener added

A new tag has been added. The resetActionListener tag is a declarative way to allow an action source ( < commandButton > , < commandLink > , etc.) to fire a reset action. All values submitted will be reset to null or empty. The reset will not alter any model state directly, rather the enclosing action should have its own actionListener which will reset all model values to their defaults. The resetActionListener tag supports no attributes.

Skinning enhancements

-ora-rule-ref is a new property you can add to skin styles to include other styles. See the purpleSkin.css file in the demo bundle for an example.

Changes from previous release

Final taglib namespace

The JSP taglib namespaces have been finalized, and no longer contain the EA version.

inlineStyle attribute

The inlineStyle attribute is now just an ordinary String, and supports EL binding. Earlier releases used a special Style object.

AdfFacesContext

The method clientValidationDisabled() has been added which indicates whether client side converters an d validators are run. < client-validation-disabled > in adf-faces-config can be set to true to turn off client side validation.

Tree, TreeTable, MenuTree, Page Hierarchy

The class hierarchy of tree, treeTable, menuTree, and page has changed from this:

  • class oracle.adf.view.faces.component.UIXComponentBase
    • class oracle.adf.view.faces.component.CollectionBase
      • class oracle.adf.view.faces.component.HierarchyBase
        • class oracle.adf.view.faces.component.MenuHierarchyBase
          • class oracle.adf.view.faces.component.UIXMenu
          • class oracle.adf.view.faces.component.UIXMenuPath
          • class oracle.adf.view.faces.component.UIXProcess
        • class oracle.adf.view.faces.component.TreeBase
          • class oracle.adf.view.faces.component.UIXMenuTree
          • class oracle.adf.view.faces.component.UIXPage
          • class oracle.adf.view.faces.component.UIXTree
            • class oracle.adf.view.faces.component.UIXTreeTable
        • class oracle.adf.view.faces.component.UIXIterator
          • class oracle.adf.view.faces.component.UIXTable

To this:

  • class oracle.adf.view.faces.component.UIXComponentBase
    • class oracle.adf.view.faces.component.UIXCollection
      • class oracle.adf.view.faces.component.UIXHierarchy
        • class oracle.adf.view.faces.component.UIXMenuHierarchy
          • class oracle.adf.view.faces.component.UIXMenu
          • class oracle.adf.view.faces.component.UIXMenuPath
          • class oracle.adf.view.faces.component.UI XProcess
          • class oracle.adf.view.faces.component.UIXMenuTree
          • class oracle.adf.view.faces.component.UIXPage
        • class oracle.adf.view.faces.component.UIXTree
          • class oracle.adf.view.faces.component.UIXTreeTable
      • class oracle.adf.view.faces.component.UIXIterator
        • class oracle.adf.view.faces.component.UIXTable
af:objectImage "align" attribute

The "halign" attribute has been renamed to "align" (since it supports both vertical and horizontal alignment constants).

af:selectOneChoice "unselectedLabel" attribute

If the selectOneChoice does not have a selected value, then an empty choice is rendered first in the list by default. Set the unselectedLabel attribute to set the label of this first choice if you do not want the default.

afh:frame and afh:frameBorderLayout

The javascript event handler attributes (onclick, onmouseover, etc) have been removed from afh:frame and afh:frameBorderLayout as they are not supported.

afh:script

All visual attributes have been removed from afh:script.

"vertical" panelGroup is now block-level

af:panelGroup in its "vertical" layout is now entirely a block-level element (div instead of span); this may cause layout changes if it has been used indiscriminately.

af:objectImage and "text"

The "text" attribute of af:objectImage (obscure functionality that didn't do what you probably thought it did) has been removed.

af:panelLabelAndMessage

In panelLabelAndMessage we no longer automatically associate the value of the label attribute with the first input control for accessibility. Users must set the "for" attribute.

Early Access 17
Features Default command to support enter key on forms

A new attribute "defaultCommand" has been introduced for the af:form tag. The ID attribute of af:commandButton, h:commandButton, af:commandLink or h:commandLink in a form can be specified for this attribute to be the default command. If this attribute is specified pressing enter on input elements in the form will invoke the specified default command. If the "defaultCommand" attribute is not specified, the form will not be submitted on pressing enter on input elements.

< af:iterator >

This new tag allows iteration of rows in a collections such as List, or DataModel. This tag tries to address some of the short-comings of the < af;forEach > tag. This tag works with a DataModel and can be bound to EL expressions with component-managed implicit variables (such as "var" variables). This tag was actually part of EA16, but was not publicized in that release.

Regions

The < af:region > tag now supports binding the "regionType" attribute. There is also a new RegionConfig class to allow programmatic access to Region data.

varStatus

We now support the 'varStatus' attribute on most components that have 'var' attributes. The 'varStatus' can be used to get at loop counter information (in addition to model properties) from within EL expressions

Aspect API

A new Aspect API (this name will likely be changed in upcoming releases) lets component changes persist across requests. For example, the sort order of a table or expansion of a tree can automatically be restored for you when you return to a page. This API is currently not active by default, but has been turned on in the demo bundle with the oracle.adf.view.faces.ASPECT_PERSISTENCE context parameter. See the Javadoc and the enclosed demos for more information.

Skinning

Check out the preliminary skinning feature. To do this, change the skin-family to "purple" in adf-faces-config.xml, and run any of the component demos. You will see the colors and buttons have changed to a purple color. You can see how the styles and icons are defined by looking at the adf-faces-skins.xml file. You can create your own skin by adding its definition to the adf-faces-skins.xml file, which will extend the "simple" skin. To find the keys which define which part of a component is customizable, look in the demo under the skins directory for adf-faces-skins-doc.xml. Some of the keys may change in an upcoming release. We'll have more complete demos in an upcoming release, and better documentation.

Changes from previous release

Changes to "process" APIs

The "process" APIs have been renamed to correspond more closely to their purpose and avoid overlap with other uses of the term. In particular, all APIs that referred to "process" now use the term "dialog", and the feature as a whole is the ADF Faces Dialog Framework. Note that it can still launch dialogs either in popup windows or in the same window - the name has changed, not the functionality.

  • launchProcess() has been renamed launchDialog(). In addition, the order of its parameters has changed.
  • returnFromProcess() is now named returnFromDialog().
  • Instead of specifying an outcome as "process:", the outcome now must start with "dialog:".
Other changes include:
  • The "useDialog" attribute on several command tags has been renamed "useWindow".
  • returnFromDialog() now takes not just a single return value, but in addition a Map of additional return parameters that will be av ailable in the return event.
  • LaunchEvent now has a convenience method, launchDialog().
  • UIXSelectInput now receives explicit ReturnEvents.

In addition, a number of "process"-related APIs have been moved from AdfFacesContext onto a helper object, DialogService, to simplify the API of the former and make it more obvious which are common APIs for page authors, and which are intended more for framework and component developers.

Changes to message formats

The faces messages have been changed to make some of the parameters consistent across components. The available parameter values are documented in the xxxMessageDetail sections of the tag documentation.

removed the 'subTrain' attribute from processTrain

Instead of the 'subTrain' attribute, we will now render the train as a subtrain when the focusPath is not focused on a top level node.

< af:goMenuItem >

This is now supported in menuButtons, page, processChoiceBar, and menuChoice.

Early Access 16
Features < af:iterator >

we've added a tag to implement iteration. While the < af:forEach > will be sufficient for most user's needs, it does not work with a JSF DataModel, or CollectionModel. It also cannot be bound to EL expressions that use component-managed EL variables. The < af:iterator > tag was created to address these issues.

< af:showOneChoice >

The showOneChoice component creates, contains and shows a series of items defined by showDetail nodes as individual options in a menu-style component. The currently selected option is the one disclosed. It also provides options to relatively layout the menu-style control vis-a-vis the disclosed content. You can display the menu-style component on the left hand side: centered / top / bottom or, you may decide to place the menu-style component on top of the disclosed content with alignment as center / left / right.

< af:showOneRadio >

The showOneRadio component creates, contains and shows a series of items defined by showDetail nodes as individual radio buttons. The currently selected option is the one disclosed. It also provides options to relatively layout the series of radio buttons vis-a-vis the disclosed content. You can display the radio buttons series on the left hand side: centered / top / bottom or, you may decide to place the options on top of the disclosed content with alignment as center / left / right.

< af:goMenuItem >

Added initial support of 'goMenuItem' component. The goMenuItem control creates a menu item representation of a UIXGo. The item could be rendered as a link, an option, a button, etc. This component is normally used as a stamp for a component that takes a MenuModel object. Currently this component works in menuTabs, menuBar, menuList, menuTree, and processTrain. It is not yet fully functional in page, menuButtons, menuChoice, or processChoiceBar.

< af:selectOneRadio >

Added 'layout' attribute which controls whether to display the buttons horizontally or vertically. The valid values are "horizontal" and "vertical", the default being "vertical".

< af:commandMenuItem >

Added 'readOnly' attribute which controls whether whether the item should be rendered as readOnly. Depending on the renderer the text may or may not appear when readOnly is true.

< afh:frame >

Added 'marginWidth' and 'marginHeight' attributes. The frame component will no longer default these attributes. To get the old default behavior set the marginWidth to 5 and the marginHeight to 0.

Changes from previous release Change of default rendering mod e to Standards from Quirks

ADF Faces now defaults the DOCTYPE to standards mode rather than quirks mode. In a future release we may add additional support to switch from standards to quirks mode, but for ea16 to switch back to quirks mode put the following in the web.xml file in your webapp directory:

<context-param>
  <param-name>oracle.adf.view.faces.ENABLE_QUIRKS_MODE
  </param-name>
  <param-value>true</param-value>
</context-param>

Due to this change there may be ui glitches or layout issues. While some of these are known, we would appreciate it if you would report ui glitches or layout issues. For users outside oracle please post them to the otn jdev forum.

Removal of oracle.adf.view.faces.model.Page

Process components no longer take a list of Page objects. See below for the new way to use process components.

< af:processChoiceBar > and < af:processTrain >

The process components no longer take a list of oracle.adf.view.faces.model.Page objects or support the action, actionListener, and immediate attributes. These components now bind to a oracle.adf.view.faces.model.MenuModel. The last node along the focusPath and its siblings are rendered.

Notice that MenuModel has no special knowledge of page navigation and places no requirements on the nodes that go into the tree. The nodes in the tree are stamped out with the 'nodeStamp' facet. The 'nodeStamp' facet normally contains a commandMenuItem component which allows the default actionListener mechanism to be used for page navigation.

These changes make the process components more flexible, but the developer must now set immediate, action, actionListener, and readOnly on the 'nodeStamp' facet. The classes oracle.adf.view.faces.model.ProcessMenuModel and oracle.adf.view.faces.model.ProcessUtils were created to simplify this and support some common process scenarios. Please see the javadoc for these classes for more informa tion.

Assuming 'processMenuModel' is an instance of oracle.adf.view.faces.model.ProcessMenuModel, here's an example of how to use a process component:

<af:processTrain var="node" value="#{processMenuModel}">
  <f:facet name="nodeStamp">
    <af:commandMenuItem text="#{node.label}"
                        action="#{node.getOutcome}"
                        immediate="#{processMenuModel.immediate}"
                        readOnly="#{processMenuModel.readOnly}"/>
  </f:facet>
</af:processTrain>

< af:processTrain >

The 'readOnly' attribute has been removed. To show the train as readOnly set readOnly to true on the commandMenuItem in the 'nodeStamp' attribute.

Early Access 15
Features

Dialog framework completely overhauled

The dialog framework has been completely overhauled for significant enhancements. Developers should re-read the documentation for this feature, now re-titled the "ADF Faces process framework". Changes and enhancements include:

  • "subprocess:*" and "dialog:*" outcomes have been replaced with just "process:"; set the new "useDialog" attribute on an < af:command... > to true to use a dialog.
  • The core mechanisms for launching subprocesses and dialogs have been unified; for example, the same AdfFacesContext.returnFromProcess() can be used to return from a process and from a dialog.
  • Dialogs (and processes) can be launched from more than just actions; for example, you can launch dialogs from ValueChangeEvents , ReturnEvents , and even PollEvents .
  • Developers can cleanly pass values into dialogs (and processes) using the new LaunchEvent mechanism.
  • ADF Faces now provides easy public (and documented) Java APIs fo r supporting dialogs (and processes) from third-party components and renderers; no Javascript coding is needed.
  • Changes to the process scope (the new name for pageFlow scope) are guaranteed to be isolated and hidden from pages outside of the process.
  • ReturnEvents are now delivered using PPR.
  • Several bugs have been resolved: dialog auto-sizing is improved, and dialog titles update as you navigate from page to page.

Menu components and the MenuModel

MenuBar, MenuButtons, MenuChoice, MenuList, MenuPath, and MenuTabs all take a menuModel and stamp out the items in the model using the nodeStamp facet. MenuPath renders the nodes along the focus path. All the others: MenuBar, MenuButtons, MenuChoice, MenuList, and MenuTabs render one level of the hierarchy along the focus path. Currently they use a 'startDepth attribute to indicate which level along the focus path to render. In future the 'startDepth' attribute will likely be replaced with an el expression in the 'value' attribute.

There is a new chapter on how to create menu's using ADF Faces components, please read the chapter for more information and examples.

"header" and "footer" facets supported on both Table and TreeTable

Previously the table supported a "footer" facet. It now supports a "header" facet to be on par with the jsf spec < h:dataTable > . TreeTable now supports both the "footer" and "header" facets.

Converters and Validators

Two new methods have been added to ADF Faces converters and validators, to set the value binding and get the value binding. These now behave similar to components. With this support the value bindings are evaluated when actual conversion and validation takes place.

Changes from previous release

RenderKit must be explicitly specified!

Earlier versions of ADF Faces automatically swapped i n the ADF Faces RenderKit . This saved developers one step in installing ADF Faces, but meant that simply putting ADF Faces on the classpath could change your page's output, and require you to install the ADF Faces installables (like our Javascript). To avoid this confusion, we now require developers to explicitly tell JSF to use the ADF Faces RenderKit by adding the following to your faces-config.xml:

  <application>
    <default-render-kit-id>
      oracle.adf.core
    </default-render-kit-id>
  </application>

processScope

pageFlowScope has been renamed to processScope; all EL expressions referring to pageFlowScope will no longer function in EA15 until they are fixed! Please also see the changes to the dialog framework, described above.

More components are PPR enabled

The "Tree" family of components including the Tree, TreeTable, MenuTree and Page components use PPR for most of their events.

Removed dependency on install.jar

The resources(styles, images and javascripts) for ADF Faces web pages are being served by ResourceServlet thus removing the dependency on the installables jar file. This requires the setting up of the Resource Servlet in the web.xml. The following entries need to go into web.xml for ADF Faces web page to function at run time inside JDeveloper.

 <servlet>
  <servlet-name>resources</servlet-name>
  <servlet-class>oracle.adf.view.faces.webapp.ResourceServlet</servlet-class>
 </servlet>

<servlet-mapping>
    <servlet-name>resources</servlet-name>
    <url-pattern>/adf/*</url-pattern>
</servlet-mapping>

Removed redirect to "/faces"

Previous releases of the ADF Faces Demo bundle included a filter that redirected URLs like http://localhost:8888/yourwebapp/index.jspx to http://localhost:8888/yourwebapp/faces/index.jspx to ensure t hat requests went through the FacesServlet . This filter has been removed. Developers must now correctly set up JSF URLs (as they must in all other JSF environments), or they'll see the error " javax.servlet.jsp.JspException: Cannot find FacesContext ".

oracle.adf.view.faces.convert package name change

The Java oracle.adf.view.faces.converter package has been renamed to oracle.adf.view.faces.convert for consistency with the JSF API.

< af:poll/ >

'pollInterval' attribute changed to 'interval'. The polling pauses when a new modal dialog is launched using ADF Faces API's, and resumes when the dialog is dismissed. See the updated poll in action in the components guide demo for more information.

Early Access 14
Features

Dependency on bali share.jar has been removed

The ADF Faces source code has been changed to remove the dependency on bali share.jar. This jar file will no longer be required as part of ADF Faces installation.

< af:validator >

We now have a new validator tag that has a "binding" attribute. This conforms exactly to the future JSF 1.2 < f:validator > tag.

Region

region and regionDef tags are fully implemented.

Added support for default values and type conversion of values.

menuTree

The menuTree component is similar to the tree component, it stamps a hierarchy of data nodes that can be expanded and collapsed. However instead of taking a TreeModel it takes a MenuModel, from which it gets the focus path. The nodes along the focus path are added to the treeState pathSet by default. The nodes in the focusPath are highlighted.

UploadedFileProcessor

ADF Faces now uses a new UploadedFileProcessor interface to process each file as it is uploaded. This API is responsible for converting the incoming stream of each file into an UploadedFile instance that is valid for (at least) the current request. Most applications will not need to replace the default UploadedFileProcessor, but applications that lean heavily on file upload may wish to replace it with a custom implementation.

Table selection: "required" support

Page authors can now set "required" on < af:tableSelectOne > and < af:tableSelectMany > , which will force developers to select at least one row in the table (or treeTable). You'll need to set "summary" on the table for the error message to read well.

Mobile Brower Support for selectInputDate

Mobile support for the selectInputDate has been added based on the dialog framework.

Message Customization

Error messages reported for cases of invalid input for editable components, during conversion and validation can be customized for every converter or validator. This also applies to 'required' validation on all input components. The faces message has the summary and detail part. It is the detail part of the faces message that is customizable, either by setting message on the appropriate attributes of the tags or using equivalent APIs on the converter / validator or input component instances. These attributes are called as < cause > MessageDetail, for example noMatchMessageDetail on the reg exp validator. These messages can contain placeholders, like {0}, {1}, {2}, {3} or {4}.

Example:

   <af:selectInputColor id="sicConvx"
                        label="Enter or choose color"
                        value="#{messageCustomization.color}"
                        tip="HTML hex color pattern:#RRGGBB">
   <af:convertColor patterns="#RRGGBB"
                       convertMessageDetail="The color "{0}" you have
                       chosen in "{1}" is not a valid HTML hex pattern "{4}"."/>
   </af:selectInputColor>



For invalid input value say #FFFFFG - The validation message at client side would translate to:

The color "FFFF0G" you have chosen in "Enter or choose color" is not a valid HTML hex pattern "#RRGGBB".

See API, javadoc of validators and converters for the set of allowed placeholders for each message.

< af:convertNumber >

oracle.adf.faces.convert.NumberConverter is an extension over jsf's javax.faces.convert.NumberConverter, and is automatically associated with the ordinary < f:convertNumber > tag; no special configuration is needed. This tag with the same name is now provided in 'af:' namespace with additional attributes that enables customization of error messages that is to be displayed in case of invalid values. See tag doc and API doc for more information.

AutoSubmit

The < /af:selectOneRadio > , < /af:selectManyList > , and < /af:selectOneList > components now support the autoSubmit attribute. Setting autoSubmit to true will cause a partial page submit to occur when the component's value changes. Demos of < /af:selectOneRadio > and < /af:selectManyList > have been added to pprDemos.jspx ( < /af:selectOneList > works exactly like < /af:selectManyList > ).

Changes from previous release

< af:validateDateTimeRange >

Attributes minimum and maximum of this validator, now accepts ISO 8601 date strings, of the form "yyyy-MM-dd" (for example 2004-06-22).

showDetail and "immediate"

All of the showDetail components - < af:showDetail > , < af:showDetailHeader > , and < af:showDetailItem > - now default "immediate" to false. This matches the value of "immediate" on all other components, and seem s to match user expectations better.

< af:stylesheet > is now < afh:stylesheet >

The stylesheet component is now in the afh namespace.

new boolean attribute "valuePassThru" on selectMany and selectOne components

All of the selectMany and selectOne components have a new attribute, "valuePassThru". This defaults to false. Set to true when you care that the value you set on the children is directly passed through to the client (if you are writing javascript against the client-side value, for instance). Most users will not need to set this attribute.

< look-and-feel > is now < skin-family > in adf-faces-config.xml

TableSelectMany

tableSelectMany now supports the "autoSubmit" attribute.

page

The page component now supports showing hierarchical data when the depth of the menu model is more than 3 levels. See the page component demo for an example.

< af:tree >

< af:tree > now supports the "focusPath" attribute. The nodes along the focus path are added to the treeState pathSet by default. The last node in the focusPath is highlighted.

< af:treeTable >

< af:treeTable > support "focusPath" on the tag. The nodes along the focus path are added to the treeState PathSet by default.

Early Access 13
Features

MyFaces support

ADF Faces EA13 has been tested successfully against MyFaces 1.0.8, available from http://incubator.apache.org/myfaces . (Earlier versions are not supported.) Thanks go to the MyFaces team for all of their work.

New < af:subform > tag and UIXSubform class

ADF Faces now includes a subform component. A subform represents an independently submittable region of a page. The contents of a subform will only be validated (or otherwise processed) if a component inside of the subform is responsible for submitting the page. This allows for comparatively fine-grained control of which components will be validated and pushed into the model without the compromises of using entirely separate form elements.

< f:convertNumber > tag

The ADF Faces number converter is an extension of the JSF standard NumberConverter, and is automatically used with the ordinary < f:convertNumber > tag; no special configuration is needed. The converter is strict while parsing and does not convert values like '123ABC' or '1.1.1'. It can default currency code, decimal separator and number grouping separator based on the adf-faces-config.xml configuration file while parsing and formatting, instead of requiring these to be set in every file. The converter is automatically registered under the standard converter ID, and therefore will be used when the < f:convertNumber > tag is used. For more details see the javadoc for oracle.adf.view.faces.converter.NumberConverter and Configuring ADF Faces of development guide.

< af:attribute > tag

This tag behaves just like the JSF f:attribute tag with one major difference: When the value attribute is bound to an EL expression, the EL expression is attached to the component as a value binding for later evaluation (unlike the JSF f:attribute tag which evaluates the expression immediately). The f:attribute tag in the upcoming v1.2 release of JSF will have this fix; thus the af:attribute tag is an interim measure until ADF Faces upgrades to JSF v1.2.

< af:menuList >

The menuList component is used to create a list of menu items with a bullet, circle, square, lower case letter, upper case let ter, or number next to each item.

TreeTable selection

The < af:tableSelectOne > and < af:tableSelectMany > tags are now supported inside the < af:treeTable > tag. See the component guide demos for examples.

Mobile Brower Support

Mobile support for the selectInputDate has been added based on the dialog framework.

Changes from previous release

< af:commandMenuItem >

There is a new "type" attribute that can be used to indicate that an item should be rendered specially. The acceptable values are "default" and "global". See the page component doc below for more information.

There is a new "selected" attribute that can be used to indicate that an item should be rendered as selected. This can be used when a commandMenuItem is used as a child of a menu[XXX ] component, for example menuTabs or menuChoice.

< af:page >

The "menuGlobal" facet has been removed from the page component. The page component now supports rendering global buttons from the menu model. Items to be rendered as global buttons should be added to the menu model as peers of the tab items, and the associated commandMenuItem's "type" attribute should return "global". See the page component demo for an example.

When the page component's "location" facet is empty, the page component now shows the focus path.

< af:commandOption > removed

The commandOption component has been removed. Use a commandMenuItem instead.

< af:commandGlobalButton > removed

The commandGlobalButton component has been removed. Use a commandMenuItem instead.

< af:validateByteLength > tag

Byte length validator now supports client side validation. See tag doc for list of supported encodings and its validation rule.

< af:showOneTabs > tag

< af:showOneTabs > has been renamed to < af:showOneTab >

Early Access 12
Features

New public Agent API

ADF Faces now offers a public Agent API that identifies the type of client used for a particular request. It includes the ability to identify common desktop browsers and a variety of handheld devices, and it and its properties are EL-accessible using the "#{adfFacesContext.agent}" EL expression.

New < af:document > tag

A new < af:document > tag provides a replacement for the earlier trio of afh: tags, html, body, and head. We recommend the use of this tag in all pages where possible, as it will be possible to support this tag in non-HTML systems, and will reserve all future enhancements for this tag.

New < af:page > and < af:commandMenuItem > tags

The < af:page > tag is similar to the panelPage tag, except that instead of having menu1, menu2 and menu3 facets for adding menu information, the user binds a model object and a stamp to render these areas. The model object the < af:page > tag binds to is the new MenuModel object described below. The new < af:commandMenuItem > tag is used as the stamp and placed in the "nodeStamp" facet of the < af:page > . Work on menuing is continuing and it is very possible that these classes will change. Feedback is welcome.

MenuModel

MenuModel is a new class extending TreeModel. At this time MenuModel adds a single method, getFocusPath(), which returns the focus path for the current view id. Several associated classes, BaseMenuModel and ViewIdPropertyMenuModel, have also been introduced. See the javadoc for details. Work on menuing is continuing and it is very possible that these classes will change. Feedback is w elcome.

Changes from previous release

Improved third-party renderer and component support

ADF Faces offers improved support third-part renderers and components. Specifically, it will automatically support any renderers registered in the standard "Basic HTML" RenderKit, even though ADF Faces does not itself use that RenderKit.

Improved < af:forEach > tag

< af:forEach > now supports 'varStatus' which can be used to access iteration properties like 'index','count','begin','end','step','current','first','last'. The constraint rules, error handling, and the current item semantics in < af:forEach > are similar to that of JSTL's < c:forEach > . There is a new progressSteps demo which shows the completion or inprogress status of various steps of a background task that is built on 'varStatus' support from < af:forEach > .

< af:validateRegExp >

Reg exp validator now supports client side validation.

< af:DateTimeConverter >

This converter is an extension over JSF’s DateTimeConverter. New dateStyle shortish has been introduced. shortish is identical to short but forces the year to be a full four digits. The converter is also lenient with the pattern and allows a secondary pattern to be set. Client side conversion is enabled. The converter picks up a time-zone and two-digit-year-start property if set in adf-faces-config.xml file while converting string to Date object. For more information see oracle.adf.view.faces.converter.DateTimeConverter and Configuring ADF Faces of development guide.

TreeState

The expansion state of the Tree and TreeTable components were being managed by a TreeState class. That class has been replaced with a more generic PathSet class.

< af:sortableHeader >

sortableHeader has been removed. Instead its "property" attribute has been renamed "sortProperty" and moved to the < column > element. Also a new attribute "sortable" has been added to the < column > which turns sortability on or off.

< af:selectInputText >

Support for "autoSubmit", "windowWidth", and "windowHeight" has been added to < af:selectInputText > .

< af:panelPageHeader >

The facets cobranding, largeAdvertisement, and mediumAdvertisement have been removed.These facets were available in later versions of ADF UIX for backwards compatibility, but are no longer recommended.

PanelPageHeader has also had the following facet names changed:
Old Name New Name
corporateBranding branding
globalButtons menuGlobal
inContextBranding brandingAppContextual
pageHeader menu2
productBranding brandingApp
quickSearch search
tabs menu1

< af:panelPage >

PanelPage has had one facet added and several others removed. The "start" facet has been removed. Normally a panelSideBar would have been placed in the "start" facet. The content that used to go into that panelSideBar can now be placed in the new "menu3" facet.

The facets cobranding, largeAdvertisement, and mediumAdvertisement have also been removed.These facets were avail able in later versions of ADF UIX for backwards compatibility, but are no longer recommended.

PanelPage has also had the following facet names changed:
Old Name New Name
about appAbout
copyright appCopyright
corporateBranding branding
end infoSupplemental
footnote infoFootnote
globalButtons menuGlobal
inContextBranding brandingAppContextual
pageButtons actions
pageHeader menu2
pageStatus infoStatus
privacy appPrivacy
productBranding brandingApp
quickSearch search
returnNavigation infoReturn
tabs menu1
userInfo infoUser

Early Access 11
Features

selectInputText

EA11 includes the first version of a < af:selectInputText > component, the replacement for the UIX < lovInput > component. This component does not yet support many of the features of the UIX component, and we do not yet support a < listOfValues > component, but may be used for initial design work. The component takes an "action" parameter, which should be hooked up to a "dialog:" outcome; any dialog may be used, and the return value of that dialog will be used as the new value of the component.

progressIndicator

EA11 includes the first version of a < af:progressIndicator > component, the replacement for the UIX < processing > component.

poll

EA11 includes the first version of < af:poll > component. This component delivers regular PollEvents to the server, which in conjunction with partial-page rendering lets you update data at regular intervals or implement a "heartbeat" for logout after inactivity.

Nested Columns

In this release it is possible to nest < af:column > elements inside each other to create column groups.

RowHeaders

Columns now support the "rowHeader" attribute. When this attribute is set to true, the column renders as if it is a rowHeader.

Mobile

Limited Partial Page Rendering is supported on the Windows Mobile 2003 browser. PPR is supported for the table, showdetail and sortableHeader components with this release. Please note that not all of the Partial Page Rendering demos listed under the Feature Demos section work on the Windows Mobile 2003. PPR support will continue to be enhanced in the coming releases.

Early Access 10
Features Table, Tree and TreeTable

The se no longer render long rowKeys on the client browser, but instead rely on state saving to persist row keys.

TreeTable

The treeTable has a new facet called "pathStamp". This allows the focus path (breadcrumbs) area to be customizable.

The treeTable has a new attribute called "rowsByDepth". This controls the blocksize of large child record sets. Each level in the tree can have a custom blocksize.

Mobile Support

The SortableHeader component is supported on mobile browsers.

Changes from previous release

Dialog framework

The dialog framework has been significantly overhauled. We no longer require the use of "launch" components, but have instead merged that functionality into the ADF Faces "command" components. Dialogs can now be launched from other dialogs, and a single action can programatically choose whether to show a dialog or to simply perform regular navigation. Please see the Launching Dialogs chapter.

Early Access 9
Features

Dialog improvements

The dialog framework has been substantially enhanced since EA8. Dialogs will now automatically appear in popup windows on clients that support partial-page rendering, and use a single browser window on other clients: no code changes are required. The "launch" components now receive a ReturnEvent when the dialog finishes, and that event includes a "return value". Dialogs should now be closed using a new AdfFacesContext.returnFromDialog() API.

The most recent versions of Mozilla Firefox will block ADF Faces dialogs from launching; however, a message appears at the top of the browser window notifying the user that a popup window was blocked and offering the opportunity to unblock that site.

Partial-page rendering improvements

The partial page rendering facility has been fully implemented.

All rendered components now support a partialTriggers attribute. This attribute takes a list of master component IDs. If any of the master components are updated via a partial event, the dependent component will be rerendered in the partial update (this is analagous to the partialTargets attribute that existed on the master component in UIX 2.x).

The inputText, selectBooleanRadio, selectOneChoice, and selectBooleanCheckbox components have been extended in EA9. They all now support an autoSubmit attribute. If set to "true" each of these components will submit their enclosing form, via a partial page mechanism, whenever they are updated.

The commandLink and commandButton components now support a partialSubmit attribute. If set to "true" the component will submit through the partial page mechanism. Thus a link or a button can be used to update a portion of the page without re-drawing the entire page. Full page rendering in response to a partial page event is also supported.

Please see the Partial Page Rendering Demos under the Feature Demos section of the ADF Faces Demos page.

Mobile browser improvements

Add support for CommandOption and MenuChoice components. The following mobile browsers are now supported.

  • Palm Web Browser 2.0/3.0
  • NetFront 3.0/3.1

Changes from previous release

GotoEvent has been removed; UIXTable now generates RangeChangeEvents .

AdfFacesContext.pushView() now takes one argument, a UIViewRoot .

The RowKeySet class now includes a getKeySet() method which returns a java.util.Set ; getRowKeyIte rator() has been removed.

isRowContainer() , pushPath() and popPath() methods on the tree components, Tree and TreeTable, and on the TreeModel have been renamed to isContainer() , enterContainer() and exitContainer() respectively.

The semantics of setPath() and getPath() on the tree components have changed. Rather than pointing to a CollectionModel, paths now point to individual nodes in the tree.

We've introduced a SortCriterion class. CollectionModel and Table, Tree and TreeTable now have a get/setSortCriteria() method.

The detail facet on the Table was renamed to "detailStamp".

Important bugs fixed include:

  • Component lifecycle methods no longer execute when 'rendered' is false.
  • The tree functions correctly inside of an < f:subview > tag.

Early Access 8
Features

Dialog/wizard framework

The first pieces of a dialog/wizard framework are available in EA8. At this time, the features include two new APIs on AdfFacesContext :

public class AdfFacesContext
{
  ...

  public void pushView();
  public void popView(boolean navigateToPopped);
}

... and two new tags, < af:launchButton > and < af:launchLink > . These tags create instances of the generic UIXLaunch component, which is an extension of UIXCommand . When navigation occurs on a "launch" component - with the same "action" attribute as you'd expect - it will automatically use pushView() to initiate a sub-pageflow. When popView() is called, ADF Faces will automatically navigate back to the originating page and deliver a ReturnEvent to the UIXLaunch component. Fo r an example, see the Dialog Framework demo in the ADF Faces Demo bundle.

In this release, the "launch" components don't pop up new windows, but always start the sub-pageflow in the same browser window. Coming releases of ADF Faces will support popping up windows with "launch" without any additional or changed client code, so that a "dialog" can be coded portably across devices and look-and-feels that may wish to pop up a window or may need to reuse the same window.

AttributeChangeEvent

All ADF Faces components now offer a generic AttributeChangeEvent API. AttributeChangeEvent is a FacesEvent subclass and a component-level event which indicates that a Renderer 's