0

在我的表单中,我想在发布后加载表单后调用 Web 服务。我已经为它创建了自定义 XBL 控件,其中有:

<xf:group id="component-group">
    <xf:action ev:event="xforms-enabled" ev:target="component-group">
        <xf:send ev:event="xforms-enabled" submission="my-submission"/> 
    </xf:action>
</xf:group>

但它没有按预期工作:每次我在 FormBuilder 中添加新元素或更改其他一些控件的名称时都会发送我的提交。一般来说,当我的表单以某种方式发生变化时会发送提交。

现在我希望仅在我发布表单并且有人打开它来填写时才发送提交(当然,当我在 FormBuilder 中按“测试”时,但我想这与发布后填写表单相同)。

我正在尝试这样的事情:

<xf:group id="component-group">
    <xf:action ev:event="xforms-model-construct-done" ev:target="component-group">
        <xf:send ev:event="xforms-model-construct-done" submission="my-submission"/> 
    </xf:action> 
</xf:group>

不幸的是它不起作用,这种方式根本不会发送提交。有什么想法吗 ?

4

1 回答 1

1

这是因为 XBL 组件设计时也是有效的。因此,您需要一种方法来测试组件是否在 Form Builder 中运行。

确实应该有一个函数,但没有(我将它添加到我们应该在此处添加到 API 的函数列表中)。你可以做:

<xf:group id="component-group"> <xf:var name="fr-params" value="xxf:instance('fr-parameters-instance')"/> <xf:action event="xforms-enabled" target="component-group" if="not($fr-params/app = 'orbeon' and $fr-params/form = 'builder')"> <xf:send submission="my-submission"/> </xf:action> </xf:group>

一些小评论:

  • 您不需要(实际上不应该)event在嵌套操作上放置属性
  • 你甚至不需要ev前缀
于 2014-12-23T19:32:40.447 回答