Сообщение проверки JSF - PullRequest
2 голосов
/ 12 ноября 2010

Я использую JSF 1.2 и Richfaces 3.3.FINAL. У меня есть inputText, который должен быть числом от 1 до 999999999999.

<h:inputText id="prodId" required="true" value="#{product.productId}" maxlength="12" >
    <f:validator validatorId="anotherValidatorValidator" />
    <f:validateLongRange minimum="1" maximum="999999999999"/>
</h:inputText>

Я хочу, чтобы в моем сообщении о проверке говорилось, что пользователь должен ввести число от 1 до 99 ... 9. Если я ввожу число -1 и отправляю форму, то это сообщение, которое мне нужно.

Если, однако, я пишу буквы в поле, произнесите 'abcd', я получу:

prodId: 'abcd' должно быть числом от -9223372036854775808 до 9223372036854775807 Пример: 98765432

Это сообщение сбивает с толку пользователей, потому что, если предложенные отрицательные числа представлены, другой валидатор validateLongRange выдаст сообщение, запрашивающее числа между правильным диапазоном.

Второе сообщение возникает из-за того, что ConverterException генерируется, когда строка submittes приводится к Long (что является типом свойства базового компонента), и появляется сообщение javax.faces.component.UIInput.CONVERSION_MESSAGE_ID.

Могу ли я каким-то образом переопределить его (не для всех случаев ConverterException, а только для конкретного) или сделать так, чтобы появилось сообщение другого validateLongRange?

1 Ответ

3 голосов
/ 12 ноября 2010

Это сообщение на самом деле приходит с javax.faces.converter.LongConverter.LONG_detail и будет появляться только тогда, когда вы настроили h:message(s) с showSummary="false" и showDetail="true". По умолчанию (итоговое) сообщение было бы иначе javax.faces.converter.LongConverter.LONG, что {2}: ''{0}'' must be a number consisting of one or more digits., что, в свою очередь, имеет больше смысла.

Если изменение отображения подробностей сообщения также не то, что вам нужно, и вы действительно хотите, чтобы конвертер отображал точно такое же сообщение, как LongRangeValidator, тогда лучше всего поставить Пользовательский конвертер, который отображает желаемое сообщение. Однако вы должны сами жестко закодировать сообщение, поскольку JSF не поддерживает какие-либо средства API для получения шаблона сообщения сообщения по умолчанию.

...