Oracle® Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1) Part Number B31973-03 |
|
|
View PDF |
This chapter describes how changes to certain UI components that the user makes at runtime can persist for the duration of the session.
Alternatively, you can configure your application so that changes persist in a permanent data repository. Doing so means that the changes remain whenever the user reenters the application. To allow this permanent persistence, you need to use the Oracle Metadata Service (MDS), which is part of the full Fusion technology stack. Using MDS and the full Fusion stack also provides the following additional persistence functionality:
Persist additional attribute values
Persist search criteria
Persist the results of drag and drop gestures in the UI
Reorder components on a page at runtime
Add and remove components and facets from the page at runtime
For information and procedures for using Oracle MDS, see the "Allowing User Customizations at Runtime" chapter of the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.
This chapter includes the following sections:
Many ADF Faces components allow users to change the display of the component at runtime. For example, a user can change the location of the splitter in the panelSplitter
component or change whether or not a panel displays detail contents. By default, these changes live only as long as the page request. If the user leaves the page and then returns, the component displays in the manner it is configured by default. However, you can configure your application so that the changes can persist through the length of the user's session. This way the changes will stay in place until the user leaves the application.
Table 31-1 shows the changes by component that provide default personalization capabilities:
Table 31-1 Implicitly Persisted Attribute Values
Component | Attribute | Affect at Runtime |
---|---|---|
|
|
Users can display or hide content using an icon in the header. Detail content will either display or be hidden, based on the last action of the user. |
|
|
The height of multiple showDetailItem components are determined by their relative value of the flex attribute. The showDetailItem components with larger flex values will be taller than those with smaller values. Users can change these proportions, and the new values will be persisted. |
|
|
Users can change the size of a panel, and that size will remain. |
|
|
Users can collapse either side of the splitter. The collapsed state will remain as last configured by the user. |
|
|
The position of the splitter in the panel will remain where last moved by user. |
|
|
The editor will display using the mode (either WYSIWYG or source) last selected by the user. |
|
|
The day considered active in the current display will remain the active day. |
|
|
The view (either day, week, month, or list), that currently displays activities will be retained |
|
|
ADF Faces Rich Client columns can be reordered by the user at runtime. The |
|
|
ADF Faces Rich Client columns can be frozen so that they will not scroll. When a column's |
|
|
The content of the column will either wrap or not. You need to create code that allows the user to change this attribute value. For example, you might create a context menu that allows a user to toggle the value from |
|
|
The selected column is based on the column last selected by the user. |
|
|
The column will either be visible or not, based on the last action of the user. You will need to write code that allows the user to change this attribute value. For example, you might create a context menu that allows a user to toggle the value from |
|
|
The width of the column will remain the same size as the user last set it. |
|
|
ADF Faces Rich Client tables can contain a component that allows users to filter the table rows by an attribute value. For a table that is configured to use a filter, the filter will either be visible or not, based on the last action of the user. You will need to write code that allows the user to change this attribute value. For example, you might create a button that allows a user to toggle the value from |
In order for the application to persist user changes to the session, you must configure your project to enable customizations.
You configure your application to enable customizations in the web.xml
file.
To implement session change persistence:
Double-click the web project in your application to open the Project Properties dialog. In the tree on the left, select the ADF View node.
On the ADF View page, activate the Enable User Customizations checkbox and select the For Duration of Session radio button.
When you elect to save changes to the session, JDeveloper adds the CHANGE_PERSISTENCE
context parameter to the web.xml
file, and sets the value to session
. This context parameter registers the ChangeManager
class that will be used to handle persistence. Example 31-1 shows the context parameter in the web.xml
file.
When an application is configured to persist changes to the session, any changes are recorded in a session variable in a data structure that is indexed according to the view ID. Every time the page is requested, in the subsequent view or restore view phase, the tag action classes look up all changes for a given component and apply the changes in the same order as they were added. This means that the changes registered through the session will be applied only during subsequent requests in the same session.
When you use session persistence, changes are recorded and restored on components against the viewId
for the given session. As a result, when the change is applied on a component that belongs to a fragment or page template, it is applicable only in scope of the page that uses the fragment or template, and does not span all pages that consume the fragment or template.For example, say your project has the pageOne.jspx
and pageTwo.jspx
JSF pages, and they both contain the fragment defined in the region.jsff
page fragment, which in turn contains a showDetail
component. When the pageOne.jspx
JSF page is rendered and the disclosed
attribute on the showDetail
component changes, the implicit attribute change is recorded and will be applied only for the pageOne.jspx
page. If the user navigates to the pageTwo.jspx
page, no attribute change is applied.