У меня есть форма в jsf, для которой я создал специальный класс валидатора, который проверяет, является ли поле: нулевым, пустым, действительным, числом и т. д. Этот класс выдает исключение с сообщением, если ввод недействителен. Проблема в том, что когда я пишу буквы в поле ввода (ввод должен быть int!), я получаю сообщение проверки по умолчанию вместо пользовательского. Как я могу отключить сообщение проверки по умолчанию?
Вот изображение с сообщением проверки по умолчанию:
JSF-код:
<h:form>
<h:inputText value = "#{deleteEmployeeBean.employeeId}"
id = "employeeId" name = "employeeId">
<f:validator validatorId = "idValidator" for = "employeeId"></f:validator>
</h:inputText>
<h:message for = "employeeId" style = "color: red;"></h:message>
<h:commandButton action = "#{deleteEmployeeBean.loadEmployee}"
value = "#{content.searchButton}"></h:commandButton>
</h:form>
Это - и помогает ли атрибут validatorMessage
h:inputText
?
Я обновил свой пост. Пользовательский валидатор работает, но кажется, что когда форма ожидает число, JSF показывает сообщение по умолчанию вместо пользовательского из моего валидатора.
Я думаю, вы столкнулись с проверкой bean-компонентов, но для проверки необходим MCVE.
@jasperdevries: коллега? Или два аккаунта?
вы можете использовать validatorMessage
для своего f:validator
<h:inputText value = "#{deleteEmployeeBean.employeeId}"
id = "employeeId" name = "employeeId" validatorMessage = "your message">
<f:validator validatorId = "idValidator" for = "employeeId"></f:validator>
</h:inputText>
или вы можете использовать это, чтобы пользователь мог вставить только номер
<h:inputText value = "#{deleteEmployeeBean.employeeId}"
id = "employeeId" name = "employeeId" validatorMessage = "your message"
onkeypress = "if (event.which < 48 || event.which > 57 ) if (event.which != 8) return false;">
<f:validator validatorId = "idValidator" for = "employeeId"></f:validator>
</h:inputText>
Я удивлен, что за это проголосовали. Укажите минимальный воспроизводимый пример. Мы мало что можем сделать с изображением.