Как установить пользовательское сообщение для стандартного валидатора в JSF? - PullRequest
9 голосов
/ 06 июня 2011

Я создал простое поле ввода для переменной int.Я хочу добавить к нему валидацию, но не вижу необходимости создавать свой собственный валидатор для него, поскольку единственное, что мне нужно, - избегать отрицательных значений и символов, отличных от цифр.Вот что я сделал:

<h:inputText id="price" value="#{placeAddControler.price}">
            <f:validateLongRange minimum="0"/>
</h:inputText>          
<h:outputText value="€" />
<br/>
<span style="color: red;"><b><h:message for="price"
showDetail="true" /></b></span>

Когда я попробую, как это работает, это результат для отрицательных значений: enter image description here

И это результат для символов:

enter image description here

Где в моем проекте я могу настроить текст этих проверочных сообщений?

Ответы [ 3 ]

20 голосов
/ 06 июня 2011

Чтобы изменить эти значения, вам необходимо определить собственный файл ресурсов, переопределить свойства, для которых вы хотите настраивать сообщения, и зарегистрировать их в web.xml. Эта ссылка , кажется, объясняет это хорошо, поэтому я включил это, а не пытался переписать содержимое.

Для более простого решения и, поскольку вы являетесь JSF 2, вы также можете использовать эти атрибутыкомпонента inputText:

requiredMessage="I am a custom message"
converterMessage="I am a custom message"
validatorMessage="I am a custom message"

Это переопределит любое сообщение, которое выдает сам валидатор.

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

2 голосов
/ 06 июня 2011

Вы можете зарегистрировать пакет сообщений и настроить эти сообщения. Это довольно приличный пример / учебник:

http://www.mkyong.com/jsf2/customize-validation-error-message-in-jsf-2-0/

0 голосов
/ 15 мая 2019

Вы также можете установить пользовательское сообщение для каждого компонента. Eg.:

<h:inputText id="price" value="#{placeAddControler.price}" validatorMessage="Price must be greater than 0.">
        <f:validateLongRange minimum="0"/>
</h:inputText>
...