Orbeon 表单:单击“提交”后禁用表单字段

问题描述

我正在尝试配置“发送”进程以将所有字段设置为只读,但没有奏效。这是我在 properties.xml 中的配置:

        <property as="xs:string" name="oxf.fr.detail.process.send.*.*">
            require-valid
            then save
            then success-message("save-success")
            then xf:setvalue(ref = "//*[xf:readonly]",value = "true()")
        </property>

感谢所有建议!

解决方法

您不能以命令式命令方式使用 xf:setvalue 设置“只读”。相反,“只读”是以声明方式定义的。在您的情况下,我建议:

  1. 提交表单后,您更改表单的阶段,例如“已提交”。在您的流程中,您可以使用 (doc):

     set-workflow-stage(name = "submitted")
    
  2. 在表单生成器中,您使用表单级公式 (doc) 声明如果“提交”阶段,整个表单是只读的。公式将如下所示:

     fr:workflow-stage-value() = 'submitted'
    

另见博文 New workflow capabilities in Orbeon Forms 2020.1