Ich habe einen Exception-Mapper geschrieben, um die vom Hibernate-Validator generierte Antwort zu überschreiben, sodass ich eine gewisse Kontrolle über das in der Antwort zurückkehrende Messaging haben könnte.Hibernate-Validator: Überwinden von Einschränkungsverletzungen Messaging
Mein Problem ist, dass ich einige Schwierigkeiten habe, eine einfache Möglichkeit zu finden, "umzuschalten", basierend auf dem Typ der Constraint-Verletzung, und deshalb habe ich Probleme beim Schreiben von benutzerdefinierten Nachrichten. Im Idealfall könnte ich einen Wechsel basierend auf der Annotation durchführen und Custom Messaging in der Antwort zurückgeben. Im Idealfall würde es in etwa so aussehen:
@Override
public Response toResponse(ConstraintViolationException exception) {
ConstraintViolation violation = exception.getConstraintViolations().iterator().next();
String message = null;
switch (violation.getType()) {
case SomeEnum.NOT_NULL:
message = "It's not null!";
break;
default:
message = "Other message!";
}
...
}
Ist etwas so einfach wie möglich?
Das ist kein großartiger Ansatz - was ist, wenn Sie die Nachrichten internationalisieren wollen? Wenn Sie diesen Weg gehen, machen Sie die annotierte "Nachricht" zu einem Schlüssel und verwenden Sie normale Nachrichtenpakete. Sehen Sie sich die Standardeinstellungen für die Out-of-the-Box-Constraint-Annotationen an. – chrylis
Ich habe bereits eine Strings-Datei für den Umgang mit der Internationalisierung. Ich vereinfachte das Beispiel, so dass es nicht der Fokus wäre. Die Sache, die mich interessiert, ist der Mechanismus, um die richtige Nachricht zu wählen, nicht wo sie abgerufen werden sollen. – Brandon