在 Orbeon 4.9 上执行提交

Performing submissions on Orbeon 4.9

升级到 Orbeon 4.9 后执行提交时遇到一些问题。

以以下提交为例:

<xf:submission action="http://localhost:7001/orbeon49/getValuesServlet"
id="OPEN_DOCUMENT"
method="post"
ref="instance('fr-form-instance')"
replace="instance">
</xf:submission>

并调用提交,使用了以下代码:

<xf:action ev:event="xforms-ready">
     <xf:send submission="OPEN_DOCUMENT"/>
</xf:action>

提交应该调用驻留在 Orbeon 应用程序中的 servlet,该应用程序响应更新实例 XMLXML。在 4.9 版中,从不调用 servlet,提交失败。 在 4.6 版中,这工作正常。

我恢复到 4.7 版只是为了尝试比 4.6 更高的版本是否有所作为并且它在 4.7 上也能正常工作。

那么,这是否意味着我们需要在 4.9 上调用提交的方式发生了变化?

这可能是由于实施了 internal requests。 Orbeon Forms,自 4.7 起,将对自身的请求视为内部请求,并且不使用实际的 HTTP 连接。然而,这将无法调用 Orbeon 网络应用程序中的 servlet。

Orbeon Forms 通过创建绝对 URL 来猜测内部请求,然后检查它是否与自身匹配的路径,例如 http://localhost:8080/orbeon/

您可以通过使用绝对 URL 来欺骗它仍然导致该 servlet,例如 http://127.0.0.1:8080/orbeon/.