Validation Xpages条件验证:仅当报告作为最终报告提交时,才设置必填字段

Validation Xpages条件验证:仅当报告作为最终报告提交时,才设置必填字段,validation,xpages,Validation,Xpages,正在执行服务器端Xpages条件验证 我只希望在Report.Status字段为'Final'时启动以下验证。(允许用户以草稿形式提交报告,稍后返回并完成报告,当用户以草稿形式提交报告时,我们不希望将字段设为必填字段。) 我该怎么办 <xp:inputTextarea style="width:75%" value="#{Report.Agenda}" id="Agenda"> <xp:this.validator

正在执行服务器端Xpages条件验证

我只希望在Report.Status字段为'Final'时启动以下验证。(允许用户以草稿形式提交报告,稍后返回并完成报告,当用户以草稿形式提交报告时,我们不希望将字段设为必填字段。)

我该怎么办

    <xp:inputTextarea style="width:75%" value="#{Report.Agenda}" id="Agenda">
                            <xp:this.validators>
                    <xp:validateRequired
                        message="Question 1 can't be blank">
                    </xp:validateRequired><!-- (1)  -->
                </xp:this.validators>
    </xp:inputTextarea>

尝试此操作后,无效,即使“状态”字段未设置为“最终”,仍需要:{

    <xp:inputTextarea style="width:75%" value="#{Report.Agenda}" id="Agenda" defaultValue="5 year agenda">
                            <xp:this.validators>
                    <xp:validateRequired message="Question 1 can't be blank"></xp:validateRequired><!-- (1)  -->
                    <xp:validateExpression message="Question 1 can't be blank">
        <xp:this.expression><![CDATA[#{javascript:
            if (Report.getItemValueString('Status')!='Final') {
                return true;
            }
        else {
        return false;
        }
        }]]></xp:this.expression>
    </xp:validateExpression>
                </xp:this.validators>
    </xp:inputTextarea>

如果字段“Status”不是“Final”,则在带有属性的submit按钮中禁用整个XPage的验证
禁用验证程序

var status=getComponent('comboBoxStatus')。getSubmittedValue();
如果(!status | | status!='Final'){返回true;}返回false;
第一行代码确定验证阶段状态控件(如组合框)的当前值(否则为空)。如果状态控件为“最终”,则第二行返回false(=不禁用验证器),否则返回true(=忽略所有验证器)

这样,只有当状态为“Final”时,XPage中的所有验证器才会执行

这是一个工作示例:


请注意,使用
disableClientSideValidation=“true”


如果您只想在XPage中禁用某些元素的验证,请仅在这些元素上设置属性“disableValidators”。

美妙的事情,如此简单,而且都在一个地方!一定会喜欢它!感谢Knut!非常感谢!另外,请看一下如何禁用整个XPage的客户端验证。