是否需要自定义验证程序而不需要验证程序? [英] customValidator without requiredValidator?

查看:22
本文介绍了是否需要自定义验证程序而不需要验证程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为一个文本字段的自定义验证器而苦苦挣扎。似乎只有在执行了所需的验证之后,自定义验证才会起作用。这意味着没有requidValidator的字段不能进行自定义验证-这是真的吗? 我想做的事情:

我有一个文本字段。仅当选择了另一个字段中的特定值(此处为复选框组)时,才需要该值。它是依赖验证。在需要文本字段之前,我的自定义验证器工作得很好-但情况不应该是这样。

复选框没有特定值->文本字段可以为空
复选框保存值->文本字段必须有值。

有什么想法吗?

    <xp:inputText id="inputText1" disableClientSideValidation="true">
</xp:inputText>

<xp:inputText id="inputText2" disableClientSideValidation="true">

    <xp:this.validators>
        <xp:customValidator message="err">
            <xp:this.validate><![CDATA[#{javascript:if(getComponentValue("inputText1").length>0 && getComponentValue("inputText2").length==0) postValidationError(this, "foo")}]]></xp:this.validate>
        </xp:customValidator>

    </xp:this.validators>
</xp:inputText>

其中getComponentValue是通过getValue或getSubmittedValue从组件接收值的方法,postValidationError是添加Faces消息的方法。

编辑最终答案

(&A)

结论和这里的示例:http://mardou.dyndns.org/Privat/osnippets.nsf/id/OBUE-95BLK4

推荐答案

所需的验证器始终是验证期间将执行的第一个验证器。这意味着您问题第一部分的答案是肯定的。

但这并不意味着您需要必需的验证器才能使用自定义验证器:您的这部分问题必须用明确的否来回答。

所需的验证器是一种特殊的"黑客攻击",因为仅当您的组件接收到新值(也称为非空)时才会执行验证器。

我不确定为什么您的自定义验证器有问题-在您描述的方案中,您只是使用所需的验证器.

编辑

只需"调整您的验证器":将自定义验证器从inputText2添加到inputText1,它应该可以工作。

编辑2:

<xp:inputText id="inputText1" disableClientSideValidation="true">
   <xp:this.validators>
      <xp:customValidator message="err">
         <xp:this.validate><![CDATA[#{javascript:
            var val = getComponent("inputText2").getSubmittedValue();
               if( val.equals("") == true )
                  return false;
               null}]]>
         </xp:this.validate>
      </xp:customValidator>
   </xp:this.validators>
</xp:inputText>

<xp:inputText id="inputText2" disableClientSideValidation="true" />

这篇关于是否需要自定义验证程序而不需要验证程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆