Настройка сообщения об ошибке проверки в JSF 2.0

Настройте сообщение об ошибке проверки в JSF 2.0

Стандартные сообщения об ошибках преобразования и проверки JSF слишком подробные, технические или иногда не совсем понятные человеку. В этой статье показано, как настроить стандартное сообщение об ошибке преобразования или проверки в JSF 2.0.

Краткое руководство

  1. Найдите ключ сообщения в файле jsf-api-2.x.jar, «Messages.properties».

  2. Создайте свой собственный файл свойств и поместите тот же ключ сообщения, который вы нашли в приведенном выше файле «Messages.properties», и замените его своим собственным сообщением об ошибке.

  3. Зарегистрируйте свой файл свойств в файлеface-config.xml и укажите его как уровень приложения.

  4. Готово.

1. Messages.properties

Все стандартные сообщения об ошибках преобразования и проверки JSF хранятся в файле «Messages.properties», который можно найти вjsf-api-2.x.jar, «javax aces\Messages.properties», см. Рисунок ниже:

jsf2-Custom-Validation-Error-Example-1

См. Часть этого файла «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 :

Если проверка не удалась, отобразите свое сообщение об ошибке сейчас.

jsf2-Custom-Validation-Error-Example-2

Скачать исходный код