Запустить проверку JSF с помощью ajax после потери фокуса

#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 намного более правильный