我有一个orbeon表单,其中包含5个带save
和Send
按钮的字段。
在save
上,只有两个字段是必填字段,在send
上,所有5个字段都是必填字段。
如何为此方案编写验证。
更新
我添加了隐藏字段,其中包含控制名称:ValidationMode
,我的流程如下:
<property as="xs:string" name="oxf.fr.detail.process.save.*.*">
xf:setvalue(
ref = "bind(ValidationMode-bind)",
value = "'save'"
)
then xf:dispatch(
name = "xforms-recalculate",
targetid = "fr-form-model"
)
then validate-all
then save-final
</property>
条件验证仍无效。请帮忙
答案 0 :(得分:0)
您可以使用save-draft
按钮进行保存而无需验证。见documentation。但是save-draft
将在保存之前完全跳过检查验证。
<强>更新强>
如果要根据按下的按钮验证(使用&#34;必需&#34;或约束公式),我可以考虑以下方式。
是否需要字段可以用XPath表达式表示。不知何故,XPath表达式必须依赖于当前按下的按钮,并且必须在那时重新应用验证。所以你可以做到以下几点:
validation-mode
,其中包含一个值,用于标识用户是按下了一个按钮还是另一个按钮,例如save
或send
或空白。$validation-mode
)。save
或send
。xf:dispatch(name = "xforms-recalculate", targetid = "fr-form-model")
。所以这些过程看起来像是:
<property as="xs:string" name="oxf.fr.detail.process.save.*.*">
xf:setvalue(
ref = "bind('validation-mode-bind')",
value = "'save'"
)
then xf:dispatch(
name = "xforms-recalculate",
targetid = "fr-form-model"
)
then validate-all
then expand-all
then save-final
</property>
<property as="xs:string" name="oxf.fr.detail.process.send.*.*">
xf:setvalue(
ref = "bind('validation-mode-bind')",
value = "'send'"
)
then xf:dispatch(
name = "xforms-recalculate",
targetid = "fr-form-model"
)
then validate-all
then expand-all
then send(
uri = "http://posttestserver.com/post.php",
method = "post",
content = "xml",
replace = "all"
)
</property>