POST /apex/wwv_flow.ajax在提交和加载的页面上返回404(未找到)

时间:2017-09-03 19:52:35

标签: oracle oracle-apex oracle-apex-5.1

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

有时APEX会针对不同的操作回复404 (Not Found)。我可以获得这些例外的点可能有所不同:

  • 进行AJAX调用时: enter image description here
  • 提交模态页面时: enter image description here
  • 在App Builder中更改页面时: enter image description here
  • 有时甚至在开发人员登录App Builder时: enter image description here

关于这一切的最奇怪的事情是这个异常只连续发生一次。例如,如果我按一个按钮提交页面,我第一次得到例外,当我第二次按下按钮时,一切正常。

如何使用100%概率重现该例程的一个例子 - 我有一个页面上有几个交互式报告。每个交互式报告都有一个链接列来编辑行。当用户单击该链接时,会出现一个带有表单的模态窗口,然后他们应该单击“保存”按钮。所以重现错误的步骤:

  1. 使用交互式报告打开页面。
  2. 选择要编辑的行,单击链接列。
  3. 更改模态窗口中的任何内容,单击“保存”。
  4. 出现错误。
  5. 再次点击Save
  6. 保存数据,关闭模态窗口并刷新报告。
  7. 在浏览器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关于我提供其他信息的主题。

1 个答案:

答案 0 :(得分:0)

使用试错法,找到了错误的原因。

似乎错误与基于LOV(值列表)的项目或报告列相关。并且只有当这些LOV基于流水线函数返回大量行时(假设一百个以上)。

这就是:

  1. User1提交一个页面,其中有几个基于LOV的项目(基于数据库流水线功能)。例如,几个Popup LOV个项目。 User1设置了一些值并按下了提交按钮。
  2. APEX accept process接收请求,尝试从LOV获取行,但不需要所有这些行,据我所知,尝试关闭游标。
  3. 流水线功能引发异常 - ORA-06548: no more rows needed。这绝对是合法的行为。
  4. APEX引擎对此反应不充分,并在请求后返回404 (Not Found)
  5. APEX show process包装此异常并将其返回给User1。 User1看到我上面显示的一张图片。
  6. 因此,解决方案是抑制由LOV组件中使用的流水线函数生成的任何异常。在这样做之后,一切都开始运作良好。

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