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)
不同的操作。我可以获得这些异常的点可能不同:
- 当调用 AJAX 时:
- 提交模式页面时:
- 在 App Builder 中更改页面时:
- 有时甚至当开发人员登录到 App Builder 时:
最奇怪的是,这个异常只连续出现一次。例如,如果我按下按钮提交页面,第一次出现异常,当我第二次按下按钮时,一切正常。
如何以 100% 的概率重现异常的示例之一 - 我有一个包含多个交互式报告的页面。每个交互式报告都有一个 link 列来编辑行。当用户单击 link 时,会出现带有表单的模态 window,然后他们应该单击按钮 "Save"。所以重现错误的步骤:
- 打开带有交互式报告的页面。
- 选择要编辑的行,单击 link 列。
- 更改模式中的任何内容 window,单击保存。
- 出现错误。
- 再次单击
Save
。
- 数据已保存,模态 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 多行)。
事情是这样的:
- User1 提交了一个页面,其中有几个项目基于
LOV
(它们又基于数据库管道函数)。例如,几个 Popup LOV
项目。 User1 设置了一些值并按下了提交按钮。
APEX accept process
收到请求,尝试从 LOV 获取行,但不需要所有行,据我所知,尝试关闭游标。
- 流水线函数引发异常 -
ORA-06548: no more rows needed
。这是绝对合法的行为。
- APEX 引擎对其反应不充分,returns
404 (Not Found)
作为请求的结果。
APEX show process
包装此异常并将其 return 发送给 User1。用户 1 看到了我上面显示的其中一张图片。
所以解决方案是抑制由 LOV 组件中使用的流水线函数生成的任何异常。这样做之后,一切开始运行良好。
我认为它是 Oracle APEX 错误,原因有以下三个 - 对流水线函数的反应不充分,响应中生成的错误对开发人员和用户来说都是不透明的,而且它是甚至没有在任何地方正确登录。
在 Oracle APEX 应用程序的开发过程中,我开始从 APEX 引擎中得到非常奇怪的 404 (Not Found)
异常。
有时 APEX 会响应 404 (Not Found)
不同的操作。我可以获得这些异常的点可能不同:
- 当调用 AJAX 时:
- 提交模式页面时:
- 在 App Builder 中更改页面时:
- 有时甚至当开发人员登录到 App Builder 时:
最奇怪的是,这个异常只连续出现一次。例如,如果我按下按钮提交页面,第一次出现异常,当我第二次按下按钮时,一切正常。
如何以 100% 的概率重现异常的示例之一 - 我有一个包含多个交互式报告的页面。每个交互式报告都有一个 link 列来编辑行。当用户单击 link 时,会出现带有表单的模态 window,然后他们应该单击按钮 "Save"。所以重现错误的步骤:
- 打开带有交互式报告的页面。
- 选择要编辑的行,单击 link 列。
- 更改模式中的任何内容 window,单击保存。
- 出现错误。
- 再次单击
Save
。 - 数据已保存,模态 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 多行)。
事情是这样的:
- User1 提交了一个页面,其中有几个项目基于
LOV
(它们又基于数据库管道函数)。例如,几个Popup LOV
项目。 User1 设置了一些值并按下了提交按钮。 APEX accept process
收到请求,尝试从 LOV 获取行,但不需要所有行,据我所知,尝试关闭游标。- 流水线函数引发异常 -
ORA-06548: no more rows needed
。这是绝对合法的行为。 - APEX 引擎对其反应不充分,returns
404 (Not Found)
作为请求的结果。 APEX show process
包装此异常并将其 return 发送给 User1。用户 1 看到了我上面显示的其中一张图片。
所以解决方案是抑制由 LOV 组件中使用的流水线函数生成的任何异常。这样做之后,一切开始运行良好。
我认为它是 Oracle APEX 错误,原因有以下三个 - 对流水线函数的反应不充分,响应中生成的错误对开发人员和用户来说都是不透明的,而且它是甚至没有在任何地方正确登录。