Я борюсь с пользовательским валидатором для текстового поля. Кажется, что пользовательская проверка работает только ПОСЛЕ выполнения требуемой проверки. Это означает, что поле без requiredValidator не может быть проверено пользователем — это правда? Что я хочу сделать:
У меня есть текстовое поле. Значение требуется только в том случае, если выбрано конкретное значение в другом поле (здесь это группа флажков). Это зависимая проверка. Мой пользовательский валидатор работает нормально, пока текстовое поле не требуется, но это не должно иметь место.
флажок не имеет определенного значения -> текстовое поле может быть пустым
флажок содержит значение -> текстовое поле должно иметь значение.
Любые идеи?
<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 — это метод добавления сообщения о лицах.
ИЗМЕНИТЬ И ОКОНЧАТЕЛЬНЫЙ ОТВЕТ
Заключение и образец здесь: http://mardou.dyndns.org/Privat/osnippets.nsf/id/OBUE-95BLK4