2010-11-12 2 views
2

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

<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 выдает сообщение, теперь запрашивая цифры между правильным диапазоном.

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

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

+0

JSF 1.x или 2.x? У вас есть '' в 'faces-config'? – BalusC

+0

JSF 1.2 и richfaces 3.3.3.FINAL –

+0

У меня нет , только . Однако я бы не хотел переопределять CONVERSION_MESSAGE_ID для всех случаев, если это то, что вы предлагаете. Это имеет смысл для других случаев. –

ответ

2

Это сообщение на самом деле идет от 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, чтобы захватить шаблон сообщения сообщения по умолчанию.

Смежные вопросы