Поэтому я хочу изменить сообщения проверки, используемые для проверки модели с помощью ресурса DropWizard.Переопределение сообщения DropWizard ConstraintViolation
Я использую аннотации проверки java bean. Например, вот одно из полей, которое я хочу подтвердить:
@NotEmpty(message = "Password must not be empty.")
Я могу проверить это, как ожидается, с помощью валидатора.
Однако, когда я использую DropWizard для выполнения проверки на ресурсе, он добавляет дополнительные сообщения к этому сообщению. То, что я вижу, это - password Password must not be empty. (was null)
, и я нашел код, который делает это здесь - https://github.com/dropwizard/dropwizard/blob/master/dropwizard-validation/src/main/java/io/dropwizard/validation/ConstraintViolations.java
В частности, этот метод -
public static <T> String format(ConstraintViolation<T> v) {
if (v.getConstraintDescriptor().getAnnotation() instanceof ValidationMethod) {
final ImmutableList<Path.Node> nodes = ImmutableList.copyOf(v.getPropertyPath());
final ImmutableList<Path.Node> usefulNodes = nodes.subList(0, nodes.size() - 1);
final String msg = v.getMessage().startsWith(".") ? "%s%s" : "%s %s";
return String.format(msg,
Joiner.on('.').join(usefulNodes),
v.getMessage()).trim();
} else {
return String.format("%s %s (was %s)",
v.getPropertyPath(),
v.getMessage(),
v.getInvalidValue());
}
}
Есть ли способ, что я могу изменить это поведение? Я просто хочу отобразить сообщение, которое я установил в аннотации ...
Мне нравится [ответ Лукаш Wiktor в] (http://stackoverflow.com/a/30799426/1891566) лучше, потому что он повторно instates других картографов исключением того, что первым шагом в этом ответ удаляет, эффективно меняет * только обработчик для 'ConstraintValidationException' * –