【问题标题】:Oracle APEX Dynamic Action PageLoad ProcessingOracle APEX 动态操作页面加载处理
【发布时间】:2017-06-08 15:00:19
【问题描述】:

情况:我目前有一个属于仪表板页面类型的页面。它包含几个图表和报告。此页面是应用程序的主页。当页面第一次加载时,首先将请求类型传递到页面中。当页面呈现多个调用 Oracle 包的页面进程时,会执行设置值等。一旦页面进程完成,我相信动态操作就会被触发。 PageLoad 上可能有 10 个 DA 被触发。第一个 DA 在 PageLoad 上触发,但条件为 REQUEST = 'First'。如果满足条件,则重新提交页面,请求类型为:搜索。

问题:APEX 如何处理动态操作,特别是 PageLoad?如果有 10 个动态操作,所有序列都大于另一个,APEX 或页面处理是一次处理一个,还是它们都同时执行而不管序列和条件如何?

问题原因:我创建了一个 DA 来执行插入数据库表的语句。此 DA 在页面加载时无条件执行,并且是序列号:0。然后,我创建了另一个 DA 来执行相同的操作,但它是最后一个序列号。当登录到应用程序然后查看插入到 DB 表中的数据时,它显示了 4 次这两条记录。前两个是在请求类型 = First 时插入的。然后 DA 已经提到解雇并重新提交了页面,然后又插入了两条记录。我只希望数据库表中有三条记录。一个用于请求类型 First,两个用于请求类型搜索。

【问题讨论】:

  • 你查看调试日志了吗?您可以发布示例应用程序吗?我怀疑你的 DA 条件不合适。

标签: dynamic action oracle-apex pageload oracle-apex-5


【解决方案1】:

为什么要使用动态操作?为什么不使用在页面渲染期间执行的进程?

以这种方式无法保证动态动作的执行顺序,同样,JavaScript 循环的行为与您想象的一样。 JavaScript 做它自己的事。

如果您在动态操作中执行 PL/SQL,这将同步或异步运行。无论哪种方式,它们都将使用 x 个单独的进程启动。控制顺序的唯一方法是让它们处于相同的动态操作中并将“等待结果”设置为是。

这让我想起:为什么要使用动态操作?

【讨论】:

  • 如果您不使用动态操作,您将如何从页面进程重新提交页面?第一次加载页面时,需要使用值设置项目。一旦这些项目有了值,页面就会重新提交以运行基于这些项目值的查询。另外,这个不是我开发的……我继承了它,我想提高页面的性能。我不喜欢重新提交页面的动态操作,因为它会增加页面加载时间大约 2 到 3 秒。感谢您的帮助。
  • 不是重新提交页面,你不能刷新必要的区域吗?使用 Ajax 调用,您无需重新提交页面。
  • 仅供参考,我想出了一种从页面处理中重新提交页面的方法。我做了一个 redirect_url 调用并传递了新的请求类型。这种不使用动态操作的建议似乎提高了页面加载的性能。谢谢你的建议。如果您有任何其他加快页面加载速度的技巧,我很乐意阅读它们。
  • @hmarques,我不熟悉 AJAX 调用。您能否提供一个示例,说明我将如何实现 AJAX 调用以刷新区域?
  • 您可以通过向其添加 ID 并运行此 js 来刷新区域:$('#').trigger('apexrefresh');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
相关资源
最近更新 更多