在Orbeon Form Runner中遇到带有警告级别的evaluate-bind-property()函数和约束问题

时间:2014-10-21 16:56:41

标签: orbeon xforms

这是一个虚拟的例子:

<xf:bind id="test-bind" name="test" ref="test" relevant="true()">
      <xf:constraint level="warning" value="false()"/>
</xf:bind>
<xf:bind id="field1-bind" name="field1" ref="field1"
         calculate="xxf:evaluate-bind-property('test-bind','relevant')"/>
<xf:bind id="field2-bind" name="field2" ref="field2"
         calculate="xxf:evaluate-bind-property('test-bind','constraint')"/>

我希望field1的值为&#39; true&#39; (这是)和field2的值是&#39; false&#39; (不是!)。实际上两者都被评估为“真实”。如果我定义没有级别的xf:约束,我得到了正确的&#39;行为。它看起来像一个带有等级=&#39;警告&#39;不是真正的&#39;约束......这是正常的吗?

如果是,那么如何获得&#34;警告验证的结果&#34; (又名:例如用条件定义条件动作取决于被激活的警告与否)? 不能使用valid()函数,因为警告级别不在valid()函数的范围内......

1 个答案:

答案 0 :(得分:0)

从4.7开始,xxf:evaluate-bind-property()确实只允许您访问错误级别约束,甚至还有"TODO" in the code about this;)。

我不知道这是否适合您,但另一种处理此问题的方法是依赖事件,正如错误摘要所做的那样。具体来说,您可以侦听来自视图中控件的xxforms-constraints-changed事件,然后使用event('level')获取约束级别。您可以在error summary code中看到这是如何完成的。