3 Changed Behavior
Some existing behaviour changes in this release.
- Unified Task List and Workflow Console Compatibility Mode
- Improved Search Input Field on Search Pages
- Improved Map Labels
- Change to Interactive Grid Report Display During Refresh
- Page Import Changes
- Changes to Modal Dialog Page URLs
- Refresh Dynamic Action Changes
- Shared Component Navigation Changes
- Changes to Public Dictionary Views
- Control Break Customization (tableModelView)
- Changes to Faceted Search Arbitrary Filters
- Show AI Assistant Dynamic Action
- Edit List Simplified
- Text Message Substitution Strings
- Column Toggle Report, List View, and Reflow Report now Legacy
- App Builder UI Changes
- Compatibility Mode
- Enabling Network Services in Oracle Database
Database administrators must enable network services in Oracle Database to send outbound mail, invoke web services, or use template-based PDF report printing with external print servers in Oracle APEX.
3.1 Unified Task List and Workflow Console Compatibility Mode
The Unified Task List and Workflow Console pages now use enhanced substitution strings. In order for APEX to create these pages, compatibility mode must be set to 24.2 or higher.
Parent topic: Changed Behavior
3.2 Improved Search Input Field on Search Pages
The default behavior for new search pages created by the Create Page Wizard is improved.
- a larger input field (
xlarge
instead oflarge
) - item
css class
set tomxw80 t-Form-fieldContainer--noPadding
- text placeholder set to
Search...
- a default no query entered message (
Please enter your search term.
) - a default no results found message (
No results for your search term.
)
Parent topic: Changed Behavior
3.3 Improved Map Labels
Parent topic: Changed Behavior
3.4 Change to Interactive Grid Report Display During Refresh
Previously, Interactive Grid would clear the report during any kind of refresh, including when the sort or filter changed. Now, Interactive Grid displays the previous report until the new results arrive. The progress indicator behaves the same, but data loading now appears smoother.
function( config ) {
config.defaultModelOptions = {
delayClearData: false
};
return config;
}
Parent topic: Changed Behavior
3.5 Page Import Changes
You can now import a page into a different application or workspace without needing to use the command line. This allows more efficient page-level imports through the App Builder interface, streamlining the import process.
Parent topic: Changed Behavior
3.6 Changes to Modal Dialog Page URLs
javascript:
URLs for modal dialog pages. This improves the support for Content-Security-Policy settings. This change could impact your applications when you:
- manipulate the URL in the browser using JavaScript
- rely on the URL being a JavaScript function in your code
onclick
attribute to open a modal dialog page. You should search for onclick=
in your code:<button onclick="dialog_url">Click here</button>
A workaround is to use the data-action
attribute of the button:<button data-action="dialog_url">Click here</button>
apex.navigation.dialog
. The URL can be the return value of APEX_PAGE.GET_PAGE
, even for dialog pages. For example:apex.navigation.dialog(
apex.items.P1_DIALOG_URL.value,
{
height:'480',
width:'800',
} );
The p_triggering_element
parameter of the apex_util.prepare_url
and apex_page.get_url
APIs can no longer be a JavaScript expression. The value now must be a string selector.
#STATIC_ID
instead of $('#STATIC_ID')
.select apex_page.get_url(
p_application => 100,
p_page => 2, -- a modal dialog page
p_triggering_element => '#STATIC_ID' ) as url
from dual;
Parent topic: Changed Behavior
3.7 Refresh Dynamic Action Changes
The Refresh dynamic action now features a Maintain Pagination switch. If the switch is On
, pagination and scroll position for reports is maintained on refresh.
This switch is currently only supported for Interactive Reports.
Parent topic: Changed Behavior
3.8 Shared Component Navigation Changes
- Map Backgrounds moves from Other Components to User Interface
- Data Load Definitions moves from Data Sources to Other Components
- REST Enabled SQL Databases moves from Data Sources to Workspace Objects
- REST Synchronizations moves from Data Sources to Tasks
- AI Attributes
- AI Configurations
- AI Services
Parent topic: Changed Behavior
3.9 Changes to Public Dictionary Views
apex_application_page_items
apex_appl_page_ig_columns
apex_appl_page_filters
apex_appl_plugin_settings
Use the JSON attributes column instead.
Parent topic: Changed Behavior
3.10 Control Break Customization (tableModelView
)
tableModelView
widget controlBreakTemplate
option to implement control breaks now requires changes:
- add the new
controlBreakSelector
option - add the
model
FieldMeta propertycontrolBreakIndex
to all break columns - use the new #APEX$GROUP_IDENTIFICATION# placeholder
Parent topic: Changed Behavior
3.11 Changes to Faceted Search Arbitrary Filters
The Display Toggling property is no longer part of faceted search. Instead, use the new Display property, and select whether facets are displayed Inline, or in an Add Filter Dialog. If you select Add Filter Dialog, the facets display in a modal dialog page.
You can right-click Facets in Page Designer to Synchronize Facets and quickly add new facets to existing regions.
Parent topic: Changed Behavior
3.12 Show AI Assistant Dynamic Action
The "Show AI Assistant" dynamic action's JavaScript Code attribute, used for custom processing of the assistant's responses, now binds the value of the response differently. Previously, the response was available simply as "this
". Now, the response should be accessed as "this.data.response
".
Parent topic: Changed Behavior
3.13 Edit List Simplified
In Shared Components, Lists, Edit List, the List Entries now display as an Interactive Report. To edit a list entry, you must select the List Entry Name to go to the Edit List Entry page.
To use an Interactive Grid to edit list entries, select Grid Edit from the Tasks list when editing a list.
Parent topic: Changed Behavior
3.14 Text Message Substitution Strings
To reference text messages, you can now wrap the message name in curly brackets. For example, to reference text message TEXT.MSG
, you can use &{TEXT.MSG}
. Text message substitution also supports parameters. Before the closing bracket, add name=value
pairs, separated by white space.
This syntax is only available if the application's Compatibility Mode is set to 24.2 or higher. For more information, see Substitutions in Text Messages (24.2 or later) in Oracle APEX App Builder User’s Guide.
Parent topic: Changed Behavior
3.15 Column Toggle Report, List View, and Reflow Report now Legacy
The Column Toggle Report, List View, and Reflow Report are now marked Legacy.
Parent topic: Changed Behavior
3.16 App Builder UI Changes
Changes to the application builder user interface for this release include:
- The dynamic action Open AI Assistant is renamed to Show AI Assistant.
- Modal dialog pages can now be declaratively set as Resizable.
- Application ID, Page ID, and Page Name are now displayed in Page Designer.
- The Page Number field now supports up to eight characters.
- For Popup LOVs, the Search as You Type attribute is now named Fetch on Search. The Minimum Characters field is now moved to the Search subarea.
Parent topic: Changed Behavior
3.17 Compatibility Mode
The application attribute Compatibility Mode controls the compatibility mode of the APEX runtime engine. Certain runtime behaviors change from release to release. You can use the Compatibility Mode attribute to obtain specific application behavior. This section lists Compatibility Mode changes by release. Note that all mode changes are inclusive in that all changes in older releases are included in newer releases.
Compatibility Mode Changes in Mode 4.1
In Oracle Application Express release 4.1, Automatic DML forms raised an error when rendering the page if the column name of the source of an item was invalid. Prior to Oracle Application Express release 4.1, an invalid column name of the source of an item would not raise an error when rendering the page but it would also not set session state of the item.
Also, in Oracle Application Express release 4.1, there are two new application Security Attributes to control Browser Security: Cache and Embed in Frames. Enabling the Cache attribute enables the browser to save the contents of your application's pages in its cache, both in memory and on disk. The Embed in Frames attribute controls if the browser displays your application's pages within a frame. Applications running in a Pre-4.1 Compatibility Mode function as if the Cache is enabled and as if Embed in Frames is set to allowed. Applications running in Compatibility Mode 4.1 or later respect the specific Browser Security attributes.
Also, in Oracle Application Express release 4.1, because of bug 12990445, the following changes were implemented for Automatic Row Processing (DML) process types. The code which performs the INSERT was changed to determine if the columns should be included in the INSERT statement. Note that these are the same checks which occur before an UPDATE. These new checks include:
- Is the source type a DB Column?
- Is the page item contained in the POST request? For example, if the page item is conditional it will not be contained in the POST request if the condition evaluates to FALSE during page rendering.
- Is the page item not of type Display Only where Save State is set to No?
To enable these behaviors, set the Compatibility Mode to 4.1 or later. For behavior that matches earlier releases, set the Compatibility Mode to Pre-4.1.
Compatibility Mode Changes in Mode 4.2
In Oracle Application Express release 4.2 due to changes for the new grid layout, when a page is rendered, all regions in a certain display point are evaluated before rendering that display point, to find out if they should be displayed or not (so that the grid layout knows how many columns to render). The regions where the evaluation returned true will be executed and displayed. However, this will not work if a PL/SQL based region sets session state which is then used in a subsequent region condition to determine if the region should be displayed. In that scenario, the condition has already been checked before the display point is rendered. Use computations or PL/SQL processes to set session state before any region is displayed. In previous versions, the condition was evaluated right before each region was displayed.
In Oracle Application Express release 4.2, computations and processes with a processing point Before Region(s) do now fire before any region gets rendered. Computations and processes with a processing point After Region(s) fire after all regions have been rendered. In previous versions, the computations and processes fired just before and after the region display point Page Template Body (1-3).
Oracle Application Express Patch Set 4.2.2 added two new Compatibility Mode changes for Compatibility Mode 4.2:
- Text areas were changed to always use the Maximum Width attribute to restrict text input.
- Enhanced security for report column links, where the link contains both JavaScript and references to other report column substitutions, for example:
javascript:alert( 'Delete #NAME#' );
In the previous example,
NAME
is a column name in the report.
Prior to Oracle Application Express release 4.2.1, to protect against possible cross-site scripting vulnerabilities, you would have had to explicitly escape any column values in the report source, so that they could safely be used in JavaScript links. When running in Compatibility Mode 4.2, Oracle Application Express automatically JavaScript escapes column name substitutions referenced in JavaScript links if the column is defined to escape special characters.
To fix this, Oracle recommends that you remove the manual JavaScript escaping from your report source and use of the native escaping.
Compatibility Mode Changes in Mode 5.0
In Oracle Application Express release 5.0, referencing a Static Application File with #WORKSPACE_IMAGES#
no longer returns the application file. Instead, use #APP_IMAGES#
.
wwv_flow_custom_auth_std.logout
, wwv_flow_custom_auth_std.logout_then_go_to_page
, wwv_flow_custom_auth_std.logout_then_go_to_url
, and apex_custom_auth.logout
are desupported and will raise a runtime error instead of logging out from the Oracle Application Express session. Instead, use the apex_authentication.logout
entry point.
Prior to release 5.0, developers using data upload did not have the option to choose a date format. Instead, a parser checked for the best format to match the user's entry or an end user could enter their own format. Oracle Application Express release 5.0 includes a new item that enables the user to choose an application date format or user entered format. Because applications created before release 5.0 do not have an item, a Compatibility Mode of 5.0 checks if the user has entered some data. If no data has been entered, it picks the application date format.
When a session timeout occurs and no timeout URL is specified, Oracle Application Express raises an error instead of redirecting to the application's home page. If the session setup for an Ajax requests fails, Oracle Application Express also raises an error. For Ajax requests that expect JSON, the response is a JSON string with members that describe the error. For other requests, the error appears on an error page.
Page items based on a database column where the attribute Source Used is set to Only when current value in session state is null will raise an error when the page item gets rendered. Using this setting for a database column is very dangerous and can result in accidentally overwriting data when viewing and saving multiple records. Always set the Source Used attribute to Always, replacing any existing value in session state.
Compatibility Mode Changes in Mode 5.1 / 18.1 / 18.2
In Oracle Application Express 18.1, buttons where the Execute Validations attribute is set to Yes also perform some client-side validations (such as item required checks) and will not submit the page until all issues are fixed. In previous versions this flag was just used to determine if server-side validations should be executed.
Tip:
Please pay attention when changing the Compatibility Mode to 5.1/18.1/18.2. Buttons, such as Cancel or Previous, where the Execute Validation flag has incorrectly been set to Yes and which use an After Submit branch, never execute validations when the user clicks the button. You can address this issue by using the new client-side validations, or by setting Execute Validations to No.
In release 5.1, any Ajax-based Dynamic Actions where the "Wait for Result" attribute is set to Yes
perform an asynchronous Ajax call. Prior to 5.1, such calls would be made synchronously.
Compatibility Mode Changes in Mode 19.1
In Oracle Application Express 19.1, the Rich Text editor now enforces validation of the Max Length
item attribute. When the length of the HTML markup exceeds the Max Length
value, the system produces an error message.
Compatibility Mode Changes in Mode 19.2 / 20.1 / 20.2 / 21.1
In Oracle Application Express 19.2, Classic Reports render empty column values as an empty cell instead of using a "non-breaking white-space" (
).
Compatibility Mode Changes in Mode 21.2 to 24.1
Prior to Oracle Application Express 21.2, all processes of the current processing point have been executed regardless of the added errors.
In Oracle Application Express 21.2, calling APEX_ERROR.ADD_ERROR
in a process stops further processes from executing and immediately displays the inline errors.
Compatibility Mode Changes in Mode 24.2
Starting with release 24.2, APEX supports an extended substitution syntax for text messages: &{TEXT.MESSAGE}
.
Parent topic: Changed Behavior
3.18 Enabling Network Services in Oracle Database
Database administrators must enable network services in Oracle Database to send outbound mail, invoke web services, or use template-based PDF report printing with external print servers in Oracle APEX.
To learn more, see Enabling Network Services in Oracle Database in Oracle APEX Installation Guide.
Note:
Enabling network services does not apply to APEX instances running on Oracle Autonomous Database. APEX can communicate with external endpoints over the internet without additional configuration.- When and Why Network Services Must be Enabled
Enabling network services enables support for sending outbound mail in Oracle APEX, using REST Services, REST Enabled SQL, or other web services, and using a remote server for report printing. - Granting Connect Privileges
- Troubleshooting an Invalid ACL Error
Learn how to identify any invalid ACL error by running the query.
Parent topic: Changed Behavior
3.18.1 When and Why Network Services Must be Enabled
Enabling network services enables support for sending outbound mail in Oracle APEX, using REST Services, REST Enabled SQL, or other web services, and using a remote server for report printing.
By default, the ability to interact with network services is disabled in Oracle Database. Therefore, you must use the DBMS_NETWORK_ACL_ADMIN
package to grant network connect privileges to the database user that owns the APEX schema (APEX_240200
). Failing to grant these privileges results in issues with:
-
Sending outbound mail in Oracle APEX.
Users can call methods from the
APEX_MAIL
package, but issues arise when sending outbound email. - Consuming REST services and other web services from APEX.
- Making outbound LDAP calls from APEX.
- Using a remote print server for report printing.
The granted network connect privileges apply to the entire APEX instance and enable all applications in all workspaces to perform outbound network calls. You do not need to grant network connect privileges to individual workspace schemas unless applications also use native database PL/SQL API such as UTL_HTTP
and UTL_SMTP
.
Note:
When upgrading APEX, the upgrade automatically configures Network Services based on the configuration of the previous APEX version.Tip:
To run the examples described in this section, the compatible initialization parameter of the database must be set to at least 11.1.0.0.0
. By default, the parameter is set properly, but a database upgraded from a version prior to 11g may require an update. For information about changing database initialization parameters, see Specifying the Database Compatibility Level in Oracle Multitenant
Administrator's Guide.
Parent topic: Enabling Network Services in Oracle Database
3.18.2 Granting Connect Privileges
The following example demonstrates how to grant connect privileges to any host for the the database user that owns the APEX schema (APEX_240200
). This example assumes you connected to the database where Oracle APEX is installed as SYS
specifying the SYSDBA
role.
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => APEX_APPLICATION.g_flow_schema_owner,
principal_type => xs_acl.ptype_db));
END;
/
The following example demonstrates how to provide less privileged access to local network resources. This example enables access only to servers running on the same database host (localhost
), such as email and report printing servers.
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'localhost',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => APEX_APPLICATION.g_flow_schema_owner,
principal_type => xs_acl.ptype_db));
END;
/
Parent topic: Enabling Network Services in Oracle Database
3.18.3 Troubleshooting an Invalid ACL Error
Learn how to identify any invalid ACL error by running the query.
If you receive an ORA-44416: Invalid ACL
error after running the previous script, use the following query to identify the invalid ACL:
REM Show the dangling references to dropped users in the ACL that is assigned
REM to '*'.
SELECT ACL, PRINCIPAL
FROM DBA_NETWORK_ACLS NACL, XDS_ACE ACE
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL AND
NACL.ACLID = ACE.ACLID AND
NOT EXISTS (SELECT NULL FROM ALL_USERS WHERE USERNAME = PRINCIPAL);
Next, run the following code to fix the ACL:
DECLARE
ACL_ID RAW(16);
CNT NUMBER;
BEGIN
-- Look for the object ID of the ACL currently assigned to '*'
SELECT ACLID INTO ACL_ID FROM DBA_NETWORK_ACLS
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
-- If just some users referenced in the ACL are invalid, remove just those
-- users in the ACL. Otherwise, drop the ACL completely.
SELECT COUNT(PRINCIPAL) INTO CNT FROM XDS_ACE
WHERE ACLID = ACL_ID AND
EXISTS (SELECT NULL FROM ALL_USERS WHERE USERNAME = PRINCIPAL);
IF (CNT > 0) THEN
FOR R IN (SELECT PRINCIPAL FROM XDS_ACE
WHERE ACLID = ACL_ID AND
NOT EXISTS (SELECT NULL FROM ALL_USERS
WHERE USERNAME = PRINCIPAL)) LOOP
UPDATE XDB.XDB$ACL
SET OBJECT_VALUE =
DELETEXML(OBJECT_VALUE,
'/ACL/ACE[PRINCIPAL="'||R.PRINCIPAL||'"]')
WHERE OBJECT_ID = ACL_ID;
END LOOP;
ELSE
DELETE FROM XDB.XDB$ACL WHERE OBJECT_ID = ACL_ID;
END IF;
END;
/
REM commit the changes.
COMMIT;
Once the ACL has been fixed, you must run the first script in this section to apply the ACL to the APEX_240200
user.
Parent topic: Enabling Network Services in Oracle Database