2
Как я могу возвращать разные сообщения на валидаторе уровня?Проверка Java bean - переопределить сообщение по умолчанию
Интерфейс
public @interface ValidFoo
{
public String message() default "{package.ValidFoo.message}";
}
Реализация
@Override
public boolean isValid(final Foo foo, final ConstraintValidatorContext context)
{
// check constraint 1
// --> return message "package.ValidFoo.message_constraint1"
// check constraint 2
// --> return message "package.ValidFoo.message_constraint2"
}
ValidationMessages.properties
package.ValidFoo.message=Validation error.
package.ValidFoo.message_constraint1=Validation error 1.
package.ValidFoo.message_constraint2=Validation error 2.
ли вы знаете, если это возможно, чтобы добавить атрибут сообщение для форматирования во время выполнения ('«{0}»')? Кажется, что в определении интерфейса могут использоваться только жестко заданные атрибуты, и они не могут быть обновлены. – djmj
В проверке Bean 1.0 допускались только статические переменные. Hibernate Validator также позволяет интерполировать само проверенное значение. Это также привело к обновлению спецификации компонента Bean Validation 1.1. Однако это не позволяет добавлять какие-либо динамические переменные. В ближайшее время мы можем реализовать что-то подобное в Hibernate Validator - https://hibernate.atlassian.net/browse/HV-701. Не стесняйтесь оставлять комментарий по этой проблеме, чтобы описать вашу учетную запись. – Hardy
Во многих ограничениях на уровне класса эта функция полезна, поскольку проверка может зависеть от динамических свойств. Еще одна учетная запись - простая проверка учетных данных. Например, 'Заказ в состоянии {0} не может быть обновлен клиентом типа {1}. В этом случае тип также должен быть передан экземпляру проверки как-то, если он не является свойством самого заказа, что кажется плохим обходным путем. Поэтому я должен проверить этот случай вручную, чтобы создать правильное сообщение или использовать общее сообщение. 'Недействительные учетные данные для обновления порядка в текущем состоянии.'. – djmj