gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:20:15 26 4
gpt4 key购买 nike

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

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

<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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com