仅在内存中返回已关闭或已取消模态对话框中的项值(页面项)

前端开发 2026-07-12

我对 APEX 还算新手(使用 version 24.2.5)并且被分配去实现网站的一个部分,规格如下:
本页 P1 以模态对话框的形式打开另一页 P2,并且应把模态对话框页中的一个项 P2_ID 的值返回给 P1_ID
由于该项在用户打开同一个模态对话框的另一个实例时需要保持唯一,我将它仅保存在内存中。把该项设为会话状态会返回错误的值,因为 P2_ID 会被第二个调用 P2 的实例覆盖。

I have tried:

  • 使用一个 DA,在对话框关闭或取消时触发,以及在 cancel dialog 时触发。无论是在调用方还是在对话框页面。期望在任一情形(关闭或取消)都返回该项。结果返回的项被设为null。
  • 使用一个 Process 关闭对话框并设置返回项,这种方式只有在 submit 时才起作用,但能得到期望的返回。

你有没有我可以尝试的建议,还是在关闭或取消的情况下返回一个仅在内存中存在的项根本不可能?
内存至少在某种程度上似乎是问题所在,因为据我所知,关闭对话框的 DA 只有在内存中的项被删除之后才会被调用。如果有办法在被删除之前(对话框关闭或取消)把项返回给调用页面,请告诉我。

谢谢!

解决方案

你的问题在于需要重新思考唯一性的问题。与其采用仅在内存中的存储,不如把值存储在一个以唯一标识符为键的集合中(例如时间戳或对话实例计数器),然后在返回时读取正确的条目。这样可以在关闭后仍然可读,同时避免会话状态冲突。

但作为一个即时解决方案,你可以使用JavaScript,而不是依赖 APEX 的内置返回项机制。
在你的关闭按钮上使用一个动态动作,并将一个动作设为执行JavaScript代码,并使用下面的代码

apex.items.P1_ID.setValue(apex.items.P2_ID.getValue());

接着再添加一个动作来关闭对话框。这会在内存被清空之前触发。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章