|
|
 |
Oracle ADF Faces - Previous Release Notes
Previous ADF Faces Release Notes
Note:
Early Access 6 was the first publicly available release (this was in order to keep the internal and external release numbers in sync).
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 | |
| |