Я в тупике. У меня есть поле ввода на xpage, где я добавил пользовательский валидатор. Я не могу заставить пользовательский валидатор срабатывать независимо от того, что я пытаюсь сделать. Существует также validateRequired, который работает как ожидалось. Сообщение об ошибке отправляется в элемент управления «Отображение ошибок», проверка доступа к клиенту отключена. Цель пользовательского валидатора - проверить, была ли введена действительная дата. После того, как я получу его работу, я также планирую добавить другую сложную проверку, такую как проверка действительного дня недели.Не могу получить пользовательский валидатор для стрельбы
Операторы печати работают корректно, как показано в «in true» в консоли на допустимую дату, а «внутри 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>
Для меня «customValidator» неожиданно прекратил работу в 8.5.2FP3, и мне пришлось изменить его на 'this.validator', как показано Павлом. –