#ajax #validation #jsf
#ajax #проверка #jsf
Вопрос:
Как запустить проверку компонента ввода, когда компонент теряет фокус, используя ajax, вместо ожидания отправки формы вручную?
Ответ №1:
Поместите a <f:ajax event="blur">
в UIInput
компонент, который повторно отображает a <h:message>
, связанный с рассматриваемым компонентом.
<h:inputText id="foo" value="#{bean.foo}" required="true">
<f:ajax event="blur" render="fooMessage" />
</h:inputText>
<h:message id="fooMessage" />
Смотрите также Руководство по JSF 2.0 с Eclipse и Tomcat — представление и проверка точной настройки
Ответ №2:
Попробуйте этот код:
<h:inputText value="#{bean.value}" valueChangeListener="#{bean.validateValue}">
<f:ajax event="blur" render="valueError"/>
</h:inputText>
<h:outputText id="valueError" value="#{bean.valueErrorMessage}" style="color: red;" />
Если пользователь изменяет значение в вашем компоненте ввода, вы можете проверить его с помощью вашего valueChangeListener. Если пользователь затем перейдет к другому компоненту ввода, будет отображен компонент ouputText. Там вы можете отобразить сообщение, если проверка завершилась неудачей.
Комментарии:
1. Однако название события в этом ответе неверно. Это не должно иметь префикса
on
. Кроме того, вы обычно хотели бы использовать<h:message>
для отображения сообщений о проверке.2. Я пытался это исправить, но stackoverflow не позволял просто менять две буквы в сообщении. им требовалось 5, поэтому я оставил это так
3. В-третьих,
valueChangeListener
не предназначен для выполнения проверки. Используйте обычный валидатор.4. Для корректности и использования в будущем, я думаю, что ответ BalusC намного более правильный