Ich habe eine Klasse mit Validierung Anmerkungen auf meinen Eigenschaften, wie diese:Wie die Nutzlast Eigenschaft von Bohnen Validierung Anmerkung bekommen
@NotNull(payload = INVALID_CATEGORY_DESCRIPTION.class)
@Size(min = 1, max = 255, payload = INVALID_CATEGORY_DESCRIPTION_LENGHT.class)
private String description;
Dann habe ich ein @ControllerAdvice Validierung Ausnahmen zu behandeln.
@ResponseStatus(BAD_REQUEST)
@ResponseBody
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> methodArgumentNotValidException(MethodArgumentNotValidException exception) {
Wenn eine oder mehrere Validierungsannotationen fehlschlagen, wird der Exception-Handler wie erwartet ausgelöst.
Um die Nutzlasteigenschaft aus den Annotationen zu erhalten, überspringe ich die Felder mit Validierungsfehlern, dann über die Annotationen und vergleiche dann nur den Annotationsnamen mit dem FieldError-Code. Mit der Anmerkung in Händen kann ich auf die Nutzlast zugreifen.
Ich frage mich, ob es eine elegantere Möglichkeit gibt, die Nutzlast oder die Annotation, die die Ausnahme ausgelöst hat, zu erhalten, wie es für die Nachrichteneigenschaft (exception.getMessage()) der Fall ist.
Vielen Dank @Hardy, das Problem ist der Ausgangspunkt ist MethodArgumentNotValidException, da es keine Validierung durch Code durchführt, es in Annotationen beruht. –