我难住了。我在 xpage 中有一个输入字段,我在其中添加了一个自定义验证器。无论我尝试什么,我都无法触发自定义验证器。还有一个 validateRequired 可以按预期工作。错误消息被发送到“显示错误”控件,客户端验证被禁用。自定义验证器的目标是检查是否输入了有效日期。在我让它工作之后,我还计划添加其他复杂的验证,例如检查一周中的有效日期。
打印语句正常工作,如控制台中的“inside true”显示有效日期,“inside false”显示无效日期。如果我在 if 语句之后添加一个测试打印语句,它不会像你想象的那样执行。对于任何一种情况,都不会显示消息,并提交页面。
我尝试过同时使用 getValue() 和 getSubmittedValue。我也尝试过返回一个 facesMessage 和一个字符串。我也非常愿意接受更好的方法来做到这一点。
<xp:inputText id="datepicker" styleClass="datepicker"
value="#{viewScope.arrivalDate}"
defaultValue="#{javascript:statusBean.arrivalDate}"
disableClientSideValidation="true">
<xp:this.validators>
<xp:validateRequired message="Please enter the arrival date">
</xp:validateRequired>
<xp:customValidator message="err" loaded="true">
<xp:this.validate><![CDATA[#{javascript:var datepicker = getComponent("datepicker").getSubmittedValue();
var testDate = @IsTime(@TextToTime(datepicker));
print("testDate=" + testDate);
if(testDate == 0){
print("inside false");
return false;
} else if(testDate == 1){
print("inside true");
return true;
}}]]>
</xp:this.validate>
</xp:customValidator>
</xp:this.validators>