Orbeon Forms:在表单打开时确定表单 URL

问题描述 投票:0回答:1

我们需要通过表单 URL 来确定表单是从哪个环境生成的。

我们需要这个,因为表单具有调用其他应用程序的 URL,这些应用程序可以是测试、QA 或生产应用程序。因此,举个例子,测试环境中的表单需要调用也在测试环境中的第 3 方应用程序 URL:

OrbeonFormTestSystem - 3rdPartyAppTestSystem OrbeonFormQualitySystem - 3rdPartyAppQualitySystem OrbeonFormProductionSystem - 3rdPartyAppProductionSystem

为此,我们需要询问表单 URL 以查看正在使用哪个环境。我们可以通过以下 JavaScript 代码来做到这一点:

var isProdEnv = window.location.host.includes("prod_indicator");

然后我们需要使用上面的结果来隐藏/显示相关的第3方应用程序URL。

我尝试使用以下操作:

<xf:action event="xforms-model-construct-done" type="javascript"> </xf:action>

但是此代码会被删除,并且无法与控件 xPath 一起使用来切换可见性。

如有任何帮助,我们将不胜感激。

问候

皮特A

orbeon
1个回答
0
投票

我建议不要使用 JavaScript 来确定环境,因为这种方法允许用户打开控制台并使用自己的

isProductionSystem
值执行下面的指令,从而导致表单错误地认为它处于与其他环境不同的环境中这是真实的。

ORBEON.xforms.Document.setValue(
    ORBEON.fr.API.findControlsByName(
        "ProductionSystem")[0],
        isProductionSystem
)

相反,最好依赖在服务器上运行的公式。一种方法是查看

Host
标题。您可以使用名为
ProductionSystem
的隐藏控件以及以下计算值公式:

contains(xxf:get-request-header('host'), 'PROD')

然后,在其他公式中,你可以使用:

$ProductionSystem = 'true'
© www.soinside.com 2019 - 2024. All rights reserved.