【问题标题】:Orbeon form: Disable form fields after clicking "Submit"Orbeon 表单:单击“提交”后禁用表单字段
【发布时间】:2021-08-04 13:27:21
【问题描述】:

我正在尝试配置“发送”进程以将所有字段设置为只读,但它不起作用。这是我在 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>

感谢所有建议!

【问题讨论】:

    标签: orbeon


    【解决方案1】:

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

    1. 当表单提交时,你改变表单的阶段,说“提交”。在您的流程中,您可以使用 (doc):

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

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

    另见博文New workflow capabilities in Orbeon Forms 2020.1

    【讨论】:

    • 感谢@avernet,我们是否可以选择默认为系统中的每个表单构建器应用此 fr:workflow-stage-value() = 'submitted'?
    • @Tien 是的,您可以,因为这是在您的properties-local.xml 中定义的流程中完成的,例如使用oxf.fr.detail.process.submit.*.* 之类的属性名称,其中*.* 表示此流程适用于所有应用程序和所有表格。您可以在Wildcards in properties 部分找到更多相关信息。
    • 嗨@avernet,是否可以在创建时为表单构建器只读公式设置默认值?我正在尝试类似:
    • @Tien 我猜你想避免不得不为每个表单设置整个表单是只读的,如果`fr:workflow-stage-value() = 'submitted'`。不幸的是,此时,这不能在属性中定义,而只能在 Form Builder 中定义。 -亚历克斯
    • @Tien 但是你的建议是有道理的。我为此创建了一个增强请求:#4931。 -亚历克斯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多