如何在第一次加载屏幕时阻止客户端数据规则工作流程的执行?

时间:2012-10-23 03:15:13

标签: aviarc

我遇到的问题是:我有一个数据规则来验证正则表达式的字段。我提供了数据规则的服务器端和客户端版本,并将它们绑定到适当的数据集事件。

问题是,当我加载包含记录创建表单的屏幕时,该字段被标记为无效,然后用户才有机会输入值。我假设它与最初绑定到文本编辑小部件的数据集字段有关。我只希望在用户输入值或提交屏幕后测试有效性。

如何在首次加载屏幕时阻止数据规则运行?

更新

这是我的数据规则定义:

<data-rule name="{@name}"
           factory-class="com.aviarc.framework.datarule.xml.DefaultXMLDataRuleProviderFactoryImpl"
           datarule-class="com.aviarc.framework.datarule.workflow.WorkflowDataRule">
    <attributes>
        <attribute name="field" mandatory="y" type="field"/>
        <attribute name="valid-membership-number-regex" default="\d{8}[a-zA-Z\d]" mandatory="n" type="string">
            Valid membership number regex:

            - \d{8}   : match 8 digits
            - [a-zA-Z\d] : match any alphanumeric character
        </attribute>
    </attributes>
    <event name="onRowFieldChanged" workflow="workflows/set-membership-number-valid"/>
    <event name="onCurrentRowFieldChanged" client-action="actions/set-membership-number-valid"/>
</data-rule>

1 个答案:

答案 0 :(得分:0)

对于我所使用的字段更改事件,您需要显式传递数据集所绑定的字段,如下所示:

<event name="onRowFieldChanged" field="{@field}" .../>
<event name="onCurrentRowFieldChanged" field="{@field}" .../>

我认为我的数据规则必须一直在任何字段更改事件上执行,而不仅仅是它绑定的字段。