Oracle APEX 21.1 动态动作实现模态框关闭后跳转父页异常问题
问题根因
你在动态动作(DA)的「执行服务器端代码」动作中调用apex_util.redirect_url无法生效,核心原因是:
- 该动作本质是异步AJAX请求,服务端返回的重定向指令只会作用于这个AJAX请求本身,不会触发父页面(Page7所在的浏览器顶层窗口)跳转。
- 另外你提供的PL/SQL代码存在变量名笔误:声明的变量是
vc_Page7_URL,赋值时写为vcPage7_URL,不过这不是跳转失效的核心原因。
正确实现方案
推荐采用「前端跳转」的逻辑,配置步骤如下:
- 在Page12上新建动态动作,触发条件选择点击你的
Close按钮 - 给动态动作添加两个执行动作,顺序如下:
- 第一个动作(可选,仅当你需要做服务端校验时添加,不需要可以跳过):执行服务器端代码,不需要写业务逻辑,只需要在「要返回的页项」配置里添加
P12_USERNAME,确保前端可以拿到最新的用户名参数 - 第二个动作:执行JavaScript代码,代码如下:
// 关闭当前Page12的模态框 apex.navigation.dialog.close(true); // 跳转至带参数的Page7页面 apex.navigation.redirect( apex.util.makeUrl({ page: 7, items: ['P7_USERNAME'], values: [apex.items.P12_USERNAME.value] }) );
补充方案(如果你坚持要使用Dialog Closed触发)
如果你需要将DA配置在父页面Page7上,可以按如下方式配置:
- 在Page7上新建动态动作,触发事件为
Dialog Closed,触发源选择为打开Page12的按钮对应的区域 - 动作选择执行JavaScript代码,从关闭的模态框中获取返回的P12_USERNAME值,再执行跳转即可。
内容的提问来源于stack exchange,提问作者McRivers
相关产品推荐
相关产品推荐

