Quindi voglio modificare i messaggi di convalida utilizzati per convalidare un modello tramite una risorsa DropWizard.Override DropWizard ConstraintViolation message
Sto usando le annotazioni di convalida dei bean java. Per esempio ecco uno dei campi che voglio validare:
@NotEmpty(message = "Password must not be empty.")
Posso testare questo funziona come previsto utilizzando un validatore.
Tuttavia, quando utilizzo DropWizard per eseguire la convalida sulla risorsa, aggiunge alcune informazioni aggiuntive a tale messaggio. Quello che vedo è questa - password Password must not be empty. (was null)
e ho trovato il codice che fa questo qui - https://github.com/dropwizard/dropwizard/blob/master/dropwizard-validation/src/main/java/io/dropwizard/validation/ConstraintViolations.java
In particolare questo metodo -
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());
}
}
C'è un modo per ignorare questo comportamento? Voglio solo visualizzare il messaggio che ho impostato nell'annotazione ...
mi piace [risposta di Lukasz Wiktor] (http://stackoverflow.com/a/30799426/1891566) meglio perche' ri-instates gli altri mappatori eccezione che il primo passo di questo la risposta rimuove, cambiando efficacemente * solo il mappatore per 'ConstraintValidationException's * –