Настройте сообщение об ошибке проверки в JSF 2.0
Стандартные сообщения об ошибках преобразования и проверки JSF слишком подробные, технические или иногда не совсем понятные человеку. В этой статье показано, как настроить стандартное сообщение об ошибке преобразования или проверки в JSF 2.0.
Краткое руководство
-
Найдите ключ сообщения в файле jsf-api-2.x.jar, «Messages.properties».
-
Создайте свой собственный файл свойств и поместите тот же ключ сообщения, который вы нашли в приведенном выше файле «Messages.properties», и замените его своим собственным сообщением об ошибке.
-
Зарегистрируйте свой файл свойств в файлеface-config.xml и укажите его как уровень приложения.
-
Готово.
1. Messages.properties
Все стандартные сообщения об ошибках преобразования и проверки JSF хранятся в файле «Messages.properties», который можно найти вjsf-api-2.x.jar, «javaxaces\Messages.properties», см. Рисунок ниже:

См. Часть этого файла «Messages.properties»
...
# ===================================================================
# Converter Errors
# ===================================================================
javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' could not be understood as a date.
javax.faces.converter.DateTimeConverter.DATE_detail={2}: ''{0}'' could not be understood as a date. Example: {1}
...
# ====================================================================
# Validator Errors
# ====================================================================
javax.faces.validator.LengthValidator.MAXIMUM={1}: Validation Error: Length is greater than allowable maximum of ''{0}''
javax.faces.validator.LengthValidator.MINIMUM={1}: Validation Error: Length is less than allowable minimum of ''{0}''
...
Например,
1. <f:validateLength minimum=”5″ maximum=”10″ />
Если проверка максимальной длины не удалась, JSF получит «javax.faces.validator.LengthValidator.MAXIMUM».
Если проверка минимальной длины не удалась, JSF получает «javax.faces.validator.LengthValidator.MINIMUM».
2. <f:convertDateTime pattern=”d-M-yyyy” />
Если проверка даты не удалась, JSF получает «javax.faces.converter.DateTimeConverter.DATE_detail».
Note
Если вы не уверены, какой ключ соответствует какому тегу валидатора, просто покажите сообщение об ошибке один раз и сравните его с «Messages.properties», тогда вы будете знать, какой ключ вы хотите переопределить.
2. Пользовательское сообщение об ошибке
Создайте файл свойств с именем «MyMessage.properties» (имя может быть любым), поместите в него ключ сообщения и пользовательское сообщение об ошибке. Позже поместите этот файл свойств в папку ресурсов вашего проекта.
MyMessage.properties
javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' could not be understood as a date.
javax.faces.converter.DateTimeConverter.DATE_detail=Invalid date format.
javax.faces.validator.LengthValidator.MINIMUM=Minimum length of ''{0}'' is required.
Теперь вы собираетесь настроить сообщение об ошибке проверки для «javax.faces.validator.LengthValidator.MINIMUM» и сообщение об ошибке преобразования для «javax.faces.converter.DateTimeConverter.DATE_detail».
Note
Для ключа сообщения XXX_detail вы также должны переопределить его родительский ключ (сводное сообщение), который равен XXX без «_detail» позади; В противном случае JSF проигнорирует ваше новое пользовательское сообщение об ошибке и продолжит получать стандартное сообщение об ошибке из «Messages.properties». Может быть, это ошибка в JSF 2.0?
3. Регистрация сообщений Bundle
Зарегистрируйте свой файл пользовательских свойств в файле face-config.xml и укажите его как уровень приложения.
faces-config.xml
com.example.MyMessage
4. Demo
Страница JSF, добавьте валидацию<f:validateLength /> и<f:convertDateTime />.
Customize validation error message in JSF 2.0
Enter your username :
Enter your DOB :
Если проверка не удалась, отобразите свое сообщение об ошибке сейчас.

Скачать исходный код
Скачать -JSF-2-Custom-Validation-Error-Message-Example.zip (11 КБ)