Skip to main content

Friendly URL: Redirect to Different Page after Login in Oracle APEX 20.1


Oracle has updated apex.oracle.com to APEX 20.1 which includes among other features the new
Friendly URL option.

Here i am giving an example to redirect to different page after login in Oracle APEX 20.1 [Friendly URL Enabled]

Step 1: Define home page for each user in emp master table as below


Step 2: To enable Friendly URL Syntax, follow below steps,

1) On the Workspace home page, click the App Builder icon.
2) Select an application (The Application home page appears).
3) From Application home page, you can access the Definition page in TWO ways:
  • Click the Edit Application Properties button.
  • From Shared Components:
             1) Click Shared Components.
             2) Under Application Logic, click Application Definition Attributes.

The Definition page appears.

4) Under Properties, configure the Friendly URLs attribute:
Click Apply Changes to save your changes.

Step 3: Check home page for the application

Step 4: Create before header plsql process in application home page, it will take user to respective page.

DECLARE
  l_home_page  NUMBER;
  l_page_alias VARCHAR2(255);
BEGIN
-- Get home page of login user
  BEGIN
    SELECT home_page
    INTO l_home_page
    FROM fxgn_emp
    WHERE upper(ename)= upper(:app_username);
  exception
  WHEN others THEN
    l_home_page := 9999; -- login page
  END;
  
-- Get page alias from apex view [To construct secured URL, we need page alias instead of page id]  
  BEGIN
    SELECT LOWER(page_alias)
    INTO l_page_alias
    FROM apex_application_pages
    WHERE application_id = v('APP_ID')
    AND page_id          = l_home_page;
  exception
  WHEN others THEN
    l_page_alias := l_home_page;
  END;
  
  htp.init;
  -- owa_util.redirect_url('f?p=&APP_ID.:'||l_home_page||':&APP_SESSION.'); -- When friendly URL disabled
  apex_util.redirect_url (p_url => l_page_alias||'?session='||'&APP_SESSION.'); -- If friendly URL enabled
  apex_application.stop_apex_engine;
END;

That's it. Happy APEXing.

Friendly URL Hierarchy and Syntax;

https://hostname:port/ords/path_prefix/r/app_alias/page_alias?parameters

https://hostname:port/ords/properties/r/leasing/manage-units?session=18763029447245

http: stands for HyperText Transfer Protocol and operates at the application layer.

hostname is the domain name of the server. It can also include a port number or an IP address.

port is the port number assigned when configuring Oracle REST Data Services.

ords is the service name defined when configuring Oracle REST Data Services.

properties is the path_prefix which is nothing but work space name.

r is the router shortcut. This value is a constant and should never be changed.

leasing is the app_alias. 

manage-units is the page_alias. 

?session=18763029447245 identifies the session ID. When you run an application, the Application Express engine generates a session number that serves as a key to the user's session state.

About URL Parameters:

http://hostname:port/ords/path_prefix/r/app_alias/page_alias?parameters (Such as -
        p1_unit_id=1&clear=1&session=18763029447245&cs=3MdkfQa9NLmkyHAbwGPg3U-nmA7XIw5sWjU2rMzSvOy_wP1_z7BBI-Gbh2JgvffARgcYJy8id4VtL3d0l1tYm0w)

Reference:

Comments

Popular posts from this blog

Printing Page Numbers in RTF Template [Oracle BI Publisher]

Here I am giving an example to print the page numbers dynamically in the RTF (Rich Text Format) template. Step 1:  Go to page footer and copy and paste the below script. Page |  <?fo:page-number?>  of  <?fo:page-number-citation:xdofo:lastpage-joinseq?> <fo:page-number> :   This is the object, which is used to represent the current page-number. <?fo:page-number-citation:xdofo:lastpage-joinseq?> :  This is the syntax, which is used to represent the total number of pages. Step 2:  Load the XML and preview the result. Output: That's it. References: fo:page-number Printing Page Number Code in Oracle XMLP RTF Template

Oracle Application Express Views (APEX)

Application Express Views Search SELECT * FROM apex_dictionary WHERE column_id = 0; View Comment Parent View APEX_APPLICATIONS Applications defined in the current workspace or database user. APEX_WORKSPACES APEX_APPLICATION_ALL_AUTH All authorization schemes for all components by Application APEX_APPLICATIONS

Save Selected Interactive Grid Records into a Collection - Oracle APEX

Here I am giving an example to save selected interactive grid records into a oracle apex collection. Step 1: Create a new blank page. Note: Mine was page 20. You will need to update reference to " P20 " with your page number if it's different. Step 2: Create a new interactive grid report region to the page using below query. Set Static Id "EmpDetails" to the region. SELECT  *     FROM   ( SELECT  emp . empno ,                emp . ename ,                emp . JOB ,                dept . dname department ,                dept . loc  LOCATION ,                mgr . ename  manager ,                emp . hiredate ,                 nvl ( emp . sal , 0 )  salary ,                 nvl ( emp . comm , 0 )  commission            FROM  eba_demo_chart_emp emp ,                eba_demo_chart_dept dept ,                eba_demo_chart_emp mgr           WHERE  emp . deptno = dept . deptno             AND  emp . mgr      = mgr . empno  ( + )           ORDER   BY  emp . ename