Разделитель групп в сообщениях проверки JSF - PullRequest
1 голос
/ 25 октября 2011

У меня есть следующий валидатор для года рождения:

<f:validateLongRange minimum="1920" maximum="1992" />

Сообщение проверки имеет вид:

"Год рождения должен быть между 1.920 и 1.992"

Теперь некоторые пользователи жалуются: «Нужно ли ставить точку между 1 и 9?»

Ответ, конечно, "Нет", но могу ли я как-то изменить сообщение об ошибке так, чтобы в нем не отображался разделитель?

(Я изменил сообщение проверки по умолчанию в пользовательском пакете сообщений, используя заполнители {0} и {1}, чтобы вставить минимальное и максимальное значения, но я думаю, что здесь это не важно, не так ли?)

1 Ответ

1 голос
/ 25 октября 2011

Этот числовой формат был установлен LongRangeValidator, который, в свою очередь, использует NumberConverter для подготовки минимальных / максимальных значений для заполнителей. Таким образом, вы, к сожалению, не можете использовать функцию SubformatPattern API MessageFormat.

Лучше всего использовать вместо атрибута validatorMessage

<h:inputText validatorMessage="The year of birth must be between 1920 and 1992">

или для предоставления пользовательского валидатора, который расширяет LongRangeValidator и по-разному выполняет обработку сообщений (т.е. не передает преобразованное значение min / max как String, а просто передает его без преобразования). После этого вы сможете использовать следующий формат сообщения:

The {2} must be between {0,number,#} and {1,number,#}
...