orbeon - 如何在 orbeon xforms 中创建自己的验证规则?

标签 orbeon xforms

问题在于,我需要在以下一种方式提交之前验证表单,在用户提交任何内容之前,他应该单击“保存”按钮,如果他尝试单击“提交”,则会收到类似“您应该保存”的消息提交前填写表单”。

首先我认为我可以将系统字段添加到表单中,例如保存指示符,添加约束,这样

<xforms:bind id="isSaved-bind" nodeset="isSaved" 
  name="isSaved" type="xforms:string" constraint="number(.)=1" required="true()"/>

并添加

<xforms:setvalue ref="xxforms:instance('fr-form-instance')/person/isSaved">1</xforms:setvalue>  

单击“保存”按钮时的操作。

但是,问题是我必须重写所有现有表单才能在其中插入新代码。

是否有可能创建像“isSaved”这样的全局变量,并在提交之前检查每个表单,并在用户未保存表单时显示错误消息?

或者可能还有另一种我看不到的方式?

<小时/>

如有任何答案,我们将不胜感激。

最佳答案

Form Runner 会跟踪表单是干净还是,您可以在xxforms:instance('fr-persistence-instance)中访问该信息')/数据状态。处理提交的代码位于 apps/fr/includes/persistence/persistence-model.xml 中。在那里,您可以将 fr-submit-button 上的 DOMActivate 的监听器更改为:

<xforms:action ev:event="DOMActivate" ev:observer="fr-submit-button">
    <xforms:action if="instance('fr-persistence-instance')/data-status = 'clean'">
        <xforms:setvalue ref="instance('fr-persistence-instance')/submit-or-save-or-send">submit</xforms:setvalue>
        <xforms:dispatch name="fr-save-action" target="fr-persistence-model">
            <xxforms:context name="fr:check-data-valid" select="true()"/>
        </xforms:dispatch>
    </xforms:action>
    <xforms:action if="instance('fr-persistence-instance')/data-status = 'dirty'">
        <xforms:message>You must save form before submitting it.</xforms:message>
    </xforms:action>
</xforms:action>

请注意,persistence-model.xml 位于 orbeon-form-runner.jar 中。要更改该文件,请从那里提取它,并将其放置在 WEB-INF/resources/apps/fr/includes/persistence/persistence-model.xml 中。 WEB-INF/resources 上的版本将优先于 jar 文件中的版本。另请注意,这些依赖于 Form Runner 或 Form Builder 内部的更改类型在升级到新版本的 Orbeon Forms 时可能会中断。因此,您可能需要仔细跟踪它们,以便在升级时可以更轻松地重新应用更改。

关于orbeon - 如何在 orbeon xforms 中创建自己的验证规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9892357/

相关文章:

css - Orbeon Forms 2017 - 如何将部分制作成标签页

css - 带有 twitter bootstrap css 的 XLSTForms

delphi - Delphi 的 XForms 处理器?

mysql - Orbeon - MySQL 连接问题

php - 如何将 Php 生成的 Xml 加载到 Xforms 表单中进行编辑?

xforms:如何防止 xxforms:default 值覆盖用户输入

testing - 如果我没有可用的服务,如何使用提交来测试 XForms?

java - 使用 FormFaces (XForms) 将 XML 数据传递到 JSP

eclipse - Eclipse 的 XForms 编辑器(设计器)?

character-encoding - 使用 Orbeon 指定查询字符串的字符编码