POST /apex/wwv_flow.ajax returns 页面提交和加载时显示 404(未找到)

POST /apex/wwv_flow.ajax returns with 404 (Not found) on pages submit and load

Oracle APEX 应用程序的开发过程中,我开始从 APEX 引擎中得到非常奇怪的 404 (Not Found) 异常。

有时 APEX 会响应 404 (Not Found) 不同的操作。我可以获得这些异常的点可能不同:

最奇怪的是,这个异常只连续出现一次。例如,如果我按下按钮提交页面,第一次出现异常,当我第二次按下按钮时,一切正常。

如何以 100% 的概率重现异常的示例之一 - 我有一个包含多个交互式报告的页面。每个交互式报告都有一个 link 列来编辑行。当用户单击 link 时,会出现带有表单的模态 window,然后他们应该单击按钮 "Save"。所以重现错误的步骤:

  1. 打开带有交互式报告的页面。
  2. 选择要编辑的行,单击 link 列。
  3. 更改模式中的任何内容 window,单击保存。
  4. 出现错误。
  5. 再次单击Save
  6. 数据已保存,模态 window 关闭并刷新报表。

在浏览器 javascript 控制台中,我看到以下内容:

POST http://<my_ip_address>/apex/wwv_flow.ajax 404 (Not found)
XHR failed loading: POST "http://<my_ip_address>/apex/wwv_flow.ajax".

此外,我打开了 a discussion on OTN 关于我提供了一些额外信息的主题。

通过试错法,找到了错误原因。

看来,错误与基于 LOV(值列表)的项目或报告列有关。并且仅当这些 LOV 基于 return 大量行的流水线函数时 (假设有 100 多行)。

事情是这样的:

  1. User1 提交了一个页面,其中有几个项目基于 LOV(它们又基于数据库管道函数)。例如,几个 Popup LOV 项目。 User1 设置了一些值并按下了提交按钮。
  2. APEX accept process 收到请求,尝试从 LOV 获取行,但不需要所有行,据我所知,尝试关闭游标。
  3. 流水线函数引发异常 - ORA-06548: no more rows needed。这是绝对合法的行为。
  4. APEX 引擎对其反应不充分,returns 404 (Not Found) 作为请求的结果。
  5. APEX show process 包装此异常并将其 return 发送给 User1。用户 1 看到了我上面显示的其中一张图片。

所以解决方案是抑制由 LOV 组件中使用的流水线函数生成的任何异常。这样做之后,一切开始运行良好。

我认为它是 Oracle APEX 错误,原因有以下三个 - 对流水线函数的反应不充分,响应中生成的错误对开发人员和用户来说都是不透明的,而且它是甚至没有在任何地方正确登录。