使用条件自定义验证的xPage

纳什

我不知道是否在过去的文章中对此进行了讨论,但是我找不到类似的内容,所以我的问题在这里:我在自定义控件上有14个字段。现在,在工作流程中的特定条件下,我需要确保前6个字段是必需的(可以通过使用所需的验证器来完成),并且在其他8个字段中,应强制用户至少输入2个字段。我怎样才能做到这一点?我正在将属性“ disableClientSideValidation”设置为true的所有字段使用服务器端验证。我不确定是否可以在这种情况下使用自定义验证器,如果是,那么如何?

纳特·赫尔曼(Knut Herrmann)

就您而言,您可以使用validateExpression那里的SSJS代码必须返回true或false。在代码中,您可以使用来访问其他字段,getComponent("otherFieldName").getSubmittedValue()并以此方式测试填充了多少个字段。如果为0或1,则返回false,否则返回true。

validateExpression被执行只有当字段不为空。因此,将validationExpression添加到您的前6个必填字段之一,并将其validateRequired添加到其中

例子:

 <xp:inputText
    id="inputRequired1"
    value="#{...}"
    disableClientSideValidation="true">
    <xp:this.validators>
        <xp:validateRequired message="field is required"></xp:validateRequired>
        <xp:validateExpression message="please, fill at least two fields">
            <xp:this.expression><![CDATA[#{javascript:
            num = 0;
            for (i = 1; i <= 8; i++) {
                if (getComponent("inputText" + i).getSubmittedValue() !== "") {
                    num++;
                }
            }
            if (num < 2) {
                return false;
            }
            return true}]]></xp:this.expression>
        </xp:validateExpression>
    </xp:this.validators>
 </xp:inputText>
 <xp:inputText
    id="inputText1"
    value="#{...}">
 </xp:inputText>
 <xp:inputText
    id="inputText2"
    value="#{...}">
 </xp:inputText>
 ... 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章