是否需要自定义验证程序而不需要验证程序? [英] customValidator without requiredValidator?
本文介绍了是否需要自定义验证程序而不需要验证程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为一个文本字段的自定义验证器而苦苦挣扎。似乎只有在执行了所需的验证之后,自定义验证才会起作用。这意味着没有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屋!
查看全文