p:message изменить текст сообщения

Я создал форму с сопоставлением с MyBean.beansField. Я использовал аннотацию javax.validation.NotNull, чтобы убедиться, что ее нужно вводить. Пока все работает нормально, но сообщение об ошибке выглядит так:

beansField: не может быть нулевым.

Что бы я ни пробовал до сих пор, я не смог удалить «beansField:» перед сообщением.

Кто-нибудь может сказать мне, откуда этот префикс и как я могу избавиться от него?


person monty    schedule 07.03.2011    source источник
comment
См. мой ответ здесь: stackoverflow.com/a/43093563/1599699   -  person Andrew    schedule 29.03.2017


Ответы (4)


Если вы хотите проверить, ввел ли пользователь данные, вы можете в качестве альтернативы использовать атрибут required поля ввода в сочетании с полем requiredMessage, например. для поля ввода:

<h:inputText value="#{myBean.beansField}" required="true" requiredMessage="Can not be null"/>

Если вы хотите перезаписывать сообщения в целом, вам необходимо отредактировать или перезаписать файл messages.properties:

  1. Добавьте это в свой Faces-config.xml внутри элемента приложения:
<locale-config><default-locale>en</default-locale></locale-config>
     <message-bundle>/resources/messages</message-bundle>
  1. Поместите файл с именем messages_en.properties в папку ресурсов.
  2. Добавьте сообщения, которые вы хотите перезаписать, следующим образом:

    javax.faces.component.UIInput.REQUIRED=Поле ''{0}'' не может быть пустым.

person Matt Handy    schedule 07.03.2011
comment
я решил это с помощью requiredMessage=#{msg.validation_notNull}. Компонент javax.faces.component.... по-прежнему не работает (но я все еще могу решить его с помощью первого совета). Большое Вам спасибо. - person monty; 07.03.2011
comment
Подробное описание пользовательских сообщений можно найти здесь: stackoverflow.com/questions/2772857/ - person Matt Handy; 07.03.2011
comment
@idefix Вы спрашивали о javax.validation.NotNull :) - person jmj; 07.03.2011
comment
@Jigar: Да, я знаю. Ваше решение также было полезно (поэтому) +1. Я знаю, что это решение не решает проблему аннотации @NotNull, но метка (beansField:) исчезла, и это было важно для меня. До сих пор не знаю, откуда это... - person monty; 07.03.2011

добавьте ValidationMessages.properties в свой путь к классам (WEB-INF/classes или resources при использовании структуры maven)

добавлять

myapp.custommessage.notNull=your custom message

и аннотировать как

@NotNull(message="{myapp.custommessage.notNull}")
person jmj    schedule 07.03.2011
comment
к сожалению, все еще приводит к beansField: ваше собственное сообщение - person monty; 07.03.2011
comment
есть ли какие-либо ошибки/предупреждения, связанные с файлом ValidationMessages.properties? ? - person jmj; 07.03.2011

Здравствуйте, это длинный список сообщений, которые вы переписываете

# ***** JSR 303 validation messages *****
javax.validation.constraints.NotNull.message=El campo es obligatorio
javax.validation.constraints.Size.message=El campo admite de {min} a {max} caracteres
javax.validation.constraints.Min.message=El valor debe ser mayor o igual a {value}
javax.validation.constraints.Max.message=El valor debe ser menor o igual a {value}
javax.validation.constraints.Pattern.message=Solo caracteres válidos

# ==============================================================================
# Component Errors
# ==============================================================================
javax.faces.component.UIInput.CONVERSION=Se ha producido un error de conversión.
javax.faces.component.UIInput.REQUIRED=El campo es obligatorio.
javax.faces.component.UIInput.UPDATE=Se ha producido un error al procesar la información enviada.
javax.faces.component.UISelectOne.INVALID=Error de validación: el valor no es válido
javax.faces.component.UISelectMany.INVALID=Error de validación: el valor no es válido

# ==============================================================================
# Converter Errors
# ==============================================================================
javax.faces.converter.BigDecimalConverter.DECIMAL=''{0}'' debe ser un número decimal positivo o negativo.
javax.faces.converter.BigDecimalConverter.DECIMAL_detail=''{0}'' debe ser un número decimal positivo o negativo formado por cero o más dígitos, que pueden incluir a continuación una coma decimal y una fracción.  Ejemplo: {1}
javax.faces.converter.BigIntegerConverter.BIGINTEGER=''{0}'' debe ser un número formado por uno o varios dígitos.
javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail=''{0}'' debe ser un número formado por uno o varios dígitos. Ejemplo: {1}
javax.faces.converter.BooleanConverter.BOOLEAN=''{0}'' debe ser 'true' o 'false'.
javax.faces.converter.BooleanConverter.BOOLEAN_detail=''{0}'' debe ser 'true' o 'false'.  Cualquier valor diferente a ''true'', se evaluará como ''false''.
javax.faces.converter.ByteConverter.BYTE=''{0}'' debe ser un número entre -128 y 127.
javax.faces.converter.ByteConverter.BYTE_detail=''{0}'' debe ser un número entre -128 y 127.  Ejemplo: {1}
javax.faces.converter.CharacterConverter.CHARACTER=''{0}'' debe ser un carácter válido.
javax.faces.converter.CharacterConverter.CHARACTER_detail=''{0}'' debe ser un carácter ASCII válido.
javax.faces.converter.DateTimeConverter.DATE=''{0}'' no se ha podido reconocer como fecha.
javax.faces.converter.DateTimeConverter.DATE_detail=''{0}'' no se ha podido reconocer como fecha. Ejemplo: {1}
javax.faces.converter.DateTimeConverter.TIME=''{0}'' no se ha podido reconocer como hora.
javax.faces.converter.DateTimeConverter.TIME_detail=''{0}'' no se ha podido reconocer como hora. Ejemplo: {1}
javax.faces.converter.DateTimeConverter.DATETIME=''{0}'' no se ha podido reconocer como fecha y hora.
javax.faces.converter.DateTimeConverter.DATETIME_detail=''{0}'' no se ha podido reconocer como fecha y hora. Ejemplo: {1}
javax.faces.converter.DateTimeConverter.PATTERN_TYPE=Debe especificarse el atributo ''pattern'' o ''type'' para convertir el valor ''{0}''.
javax.faces.converter.DoubleConverter.DOUBLE=''{0}'' debe ser un número formado por uno o varios dígitos.
javax.faces.converter.DoubleConverter.DOUBLE_detail=''{0}'' debe ser un número entre 4.9E-324 y 1.7976931348623157E308  Ejemplo: {1}
javax.faces.converter.EnumConverter.ENUM=''{0}'' debe poder convertirse en una enumeración.
javax.faces.converter.EnumConverter.ENUM_detail=''{0}'' debe poder convertirse en una enumeración a partir de la enumeración que contiene la constante ''{1}''.
javax.faces.converter.EnumConverter.ENUM_NO_CLASS=''{0}'' debe poder convertirse en una enumeración a partir de la enumeración, pero no se ha especificado ninguna clase de enumeración.
javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail=''{0}'' debe poder convertirse en una enumeración a partir de la enumeración, pero no se ha especificado ninguna clase de enumeración.
javax.faces.converter.FloatConverter.FLOAT=''{0}'' debe ser un número formado por uno o varios dígitos.
javax.faces.converter.FloatConverter.FLOAT_detail=''{0}'' debe ser un número entre 1.4E-45 y 3.4028235E38  Ejemplo: {1}
javax.faces.converter.IntegerConverter.INTEGER=''{0}'' debe ser un número formado por uno o varios dígitos.
javax.faces.converter.IntegerConverter.INTEGER_detail=''{0}'' debe ser un número entre -2147483648 y 2147483647. Ejemplo: {1}
javax.faces.converter.LongConverter.LONG=''{0}'' debe ser un número formado por uno o varios dígitos.
javax.faces.converter.LongConverter.LONG_detail=''{0}'' debe ser un número entre -9223372036854775808 y 9223372036854775807. Ejemplo: {1}
javax.faces.converter.NumberConverter.CURRENCY=''{0}'' no se ha podido reconocer como un valor de divisa.
javax.faces.converter.NumberConverter.CURRENCY_detail=''{0}'' no se ha podido reconocer como un valor de divisa. Ejemplo: {1}
javax.faces.converter.NumberConverter.PERCENT=''{0}'' no se ha podido reconocer como porcentaje.
javax.faces.converter.NumberConverter.PERCENT_detail=''{0}'' no se ha podido reconocer como porcentaje. Ejemplo: {1}
javax.faces.converter.NumberConverter.NUMBER=''{0}'' no es un número.
javax.faces.converter.NumberConverter.NUMBER_detail=''{0}'' no es un número. Ejemplo: {1}
javax.faces.converter.NumberConverter.PATTERN=''{0}'' no es un modelo de número.
javax.faces.converter.NumberConverter.PATTERN_detail=''{0}'' no es un modelo de número. Ejemplo: {1}
javax.faces.converter.ShortConverter.SHORT=''{0}'' debe ser un número formado por uno o varios dígitos.
javax.faces.converter.ShortConverter.SHORT_detail=''{0}'' debe ser un número entre -32768 y 32767. Ejemplo: {1}
javax.faces.converter.STRING=No se ha podido convertir ''{0}'' en una cadena.


# ==============================================================================
# Validator Errors
# ==============================================================================
javax.faces.validator.DoubleRangeValidator.MAXIMUM=Error de validación: el valor es mayor que el máximo permitido de "{0}"
javax.faces.validator.DoubleRangeValidator.MINIMUM=Error de validación: el valor es inferior que el mínimo permitido de ''{0}''
javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE=Error de validación: el atributo especificado no está entre los valores esperados: {0} y {1}.
javax.faces.validator.DoubleRangeValidator.TYPE=Error de validación: el valor no tiene el tipo correcto
javax.faces.validator.LengthValidator.MAXIMUM=Error de validación: el largo es mayor que el máximo permitido de ''{0}''
javax.faces.validator.LengthValidator.MINIMUM=Error de validación: el largo es inferior que el mínimo permitido de ''{0}''
javax.faces.validator.LongRangeValidator.MAXIMUM=Error de validación: el valor es mayor que el máximo permitido de ''{0}''
javax.faces.validator.LongRangeValidator.MINIMUM=Error de validación: el valor es inferior que el mínimo permitido de ''{0}''
javax.faces.validator.LongRangeValidator.NOT_IN_RANGE=Error de validación: el atributo especificado no está entre los valores esperados: {0} y {1}.
javax.faces.validator.LongRangeValidator.TYPE=Error de validación: el valor no tiene el tipo correcto.
javax.faces.validator.NOT_IN_RANGE=Error de validación: el atributo especificado no está entre los valores esperados: {0} y {1}.
javax.faces.validator.RegexValidator.PATTERN_NOT_SET=Debe definirse el modelo Regex.
javax.faces.validator.RegexValidator.PATTERN_NOT_SET_detail=El modelo Regex debe estar definido como un valor no vacío.
javax.faces.validator.RegexValidator.NOT_MATCHED=El modelo Regex no coincide
javax.faces.validator.RegexValidator.NOT_MATCHED_detail=El modelo Regex ''{0}'' no coincide
javax.faces.validator.RegexValidator.MATCH_EXCEPTION=Error en expresión regular
javax.faces.validator.RegexValidator.MATCH_EXCEPTION_detail=Error en expresión regular, ''{0}''
javax.faces.validator.BeanValidator.MESSAGE={0}
person alanHdez    schedule 27.03.2015

Для Global... Создайте файл свойств (clientMessages.properties). Как правило, это внутри src/main/resources... внутри clientMessages.properties,

javax.faces.component.UIInput.REQUIRED=El campo ''{0}'' es obligatorio.

в .xhtml поместите:

<h:inputText value="#{myBean.beansField}" required="true" id="IdComponent"/>

или какой-нибудь компонент PrimeFaces

<p:selectOneRadio style="text-align:center" required="true" id="IdComponent"
            value="#{backingBean.value}">
                <f:selectItem itemLabel="Mensual" itemValue="MENSUAL" />
                <f:selectItem itemLabel="Única" itemValue="UNICO" />
</p:selectOneRadio>

Для интернационализации. Если у вас есть проект maven в Faces-config.xml (в WEB-INF), поместите

<locale-config><default-locale>es</default-locale></locale-config>
     <message-bundle>clientMessages</message-bundle>

нет необходимости указывать полный путь, потому что в проектах maven при компиляции ресурсы появляются в (WEB-INF/classes/), и это подпапка, из которой находится файл Faces-config.xml... таким образом работает для меня во всех проектах maven.

person Jonathan Marin    schedule 27.08.2018