Redirect/Refresh 使用动态操作的页面 - Oracle Apex 21.1

Redirect/Refresh Page Using Dynamic Action - Oracle Apex 21.1

我有一个可以创建用户帐户的页面 (Page 7)。当用户单击 Add User 按钮时,用户会经历一个 Create New User Account 流程。此流程遵循 3 个步骤:

当用户点击Step 3中的Close按钮时,我想:

由于 Step 3 中没有提交操作 (PROCESS) - 它只是呈现数据 - 我假设我不能使用像步骤 1 和 2 这样的分支。我需要依赖一个动态动作。所以我尝试设置一个在 Dialog Closed 事件上触发的 DA Executes Server-side Code:

DECLARE
  vc_Page7_URL  VARCHAR2(4000);
BEGIN
  vcPage7_URL := apex_page.get_url(
    p_page   => 7,
    p_items  => 'P7_USERNAME',
    p_values => :P12_USERNAME
  );

  apex_util.redirect_url(
    p_url => vc_Page7_URL
  );
END;

这不符合我的预期。我显然在这里忽略了一些东西。我将上面代码中的 url 记录到调试堆栈并且 url 正在正确生成,但我没有得到重定向到 Page 7。任何帮助将不胜感激。

我不确定这是否会奏效 - 您无法在动态操作过程中从 pl/sql 内部进行重定向。 pl/sql代码在后台是运行,无法重定向页面。有2个选项

  1. 更改第 7 页上的 true 操作以提交页面并添加一个分支以重定向到您选择的 url
  2. 使用 javascript 重定向(google 它,你会在上面找到几个链接)

根据@koen 的建议,我将上面的代码更改为 Close Dialog 事件下的 2 个 TRUE 操作,该事件附加到 Done 按钮的 Click 事件:

  1. Execute Server-side Code:
BEGIN
 -- i created a hidden page item to hold the URL
 :P12_REDIRECT_URL := apex_page.get_url(
   p_page   => 7,
   p_items  => 'P7_USERNAME',
   p_values => :P12_USERNAME
 );
END;
  1. Execute JavaScript Code:
let url = $v("P12_REDIRECT_URL");
apex.navigation.redirect(url);