На моей странице xhtml у меня есть поле вводаText с прикрепленными к нему двумя валидаторами. Также есть аякс-событие «размытие», прикрепленное для активации проверки при переключении фокуса с поля. Вот код:Как условно запустить jsf Validator при размытии с p: ajax?
<t:selectOneMenu id="locateRecordBy" value="#{personBean.locateRecordBy}">
<f:selectItems value="#{personBean.locateRecordByItems}"/>
</t:selectOneMenu>
<t:inputText id="personName"
value="#{personBean.name}"
required="true"
requiredMessage="Name is required.">
<p:ajax event="blur" partialSubmit="true" process="@this" update="nameerror" global="false" />
<f:validator disabled="#{param['PersonForm:locateRecordBy'] == 'FEMALE'}" validatorId="com.myapp.validators.MalePersonValidator"/>
<f:validator disabled="#{param['PersonForm:locateRecordBy'] == 'MALE'}" validatorId="com.myapp.validators.FemalePersonValidator"/>
</t:inputText>
Так что я хотел бы проверить PERSONNAME против соответствующего валидатора в зависимости от выбора пункта после фокуса не больше на поле PERSONNAME. Любые предложения, пожалуйста, что я должен изменить или добавить?
p.s. По форме подать валидацию очень хорошо.
Я не понял, что это означает: «Валидатор в зависимости от выбора элемента после фокуса больше не находится в поле« имя_пользователя »*. Какая библиотека '' от? Это из Томагавк? Являются ли эти валидаторы вызваны/запущены и работают? Предполагая, что вы назначили эти классы валидатора, например, '@FacesValidaror (value =" femalePersonValidator ")', в этом случае вам просто нужно указать 'validatorId =" femalePersonValidator "'. Полное имя класса не требуется. Атрибут 'global', связанный с' ', должен быть учтен при использовании' '. –
Tiny
@Tiny Если параметр_female_ выбран из selectOneMeny, тогда 'FemalePersonValidator' включен и используется для проверки поля _name_, в то время как' MalePersonValidator' отключен, также, если _male_ выбран из selectOneMeny, тогда 'MalePersonValidator' включен и используется для проверки поля _name_, FemalePersonValidator' отключен. Это очень хорошо работает при отправке формы. Проверка Ajax поля - это тот, который не работает. 't: inputText' от Tomahawk. – keymaker369