<b:fetchBeanInfos>
и validationFailed
работают только после запроса AJAX. Вам необходимо отправить входные данные на сервер, проверить их там, и только когда ответ будет отправлен обратно клиенту, validationFailed
обновится.
Я предлагаю использовать простой JavaScript, чтобы показать сообщение об ошибке и отключить кнопку.
Однако, если вы предпочитаете использовать проверку на стороне сервера, вот что нужно сделать:
- Добавьте пустой метод
validateInput()
к вашему бобу. Это не нуждается в какой-либо реализации; он просто должен быть там, чтобы его можно было вызвать с помощью вызова JSF AJAX.
- Добавить
id
к <b:fetchBeanInfos>
.
Добавить прослушиватель изменений AJAX для каждого поля ввода. В зависимости от типа поля ввода вам может потребоваться другой слушатель (onblur
, onchange
и т. Д.), Но общая идея такова:
<b:inputText
onblur="ajax:flightBean.validateInput()"
update="**:fetchBeansId"
value="..."
label="..."
required="true"
requiredMessage="..."
validatorMessage="...">
</b:inputText>
<b:fetchBeanInfos id="fetchBeansId"/>
Бит **:id
поможет вам, если ваша страница JSF имеет несколько «пространств имен», таких как формы, модалы, таблицы данных и вкладки. Эти пространства имен добавляют префикс к идентификатору, а **:id
позволяет вам найти id
независимо от того, какой это префикс.