Ich überschreibe die BindException, indem ich ResponseEntityExceptionHandler erweitere.Spring ResponseEntityExceptionHandler löst Override-Nachrichten nicht auf
Ich habe meine benutzerdefinierten Nachrichten im Eigenschaftspaket bereitgestellt. Es wird jedoch nicht von ResponseEntityExceptionHandler erkannt.
Es löst für TypeMistMatch auf Controller-Anforderungsparameter. Aber es nicht innerhalb ResponseEntityExceptionHandler.
Fehle ich etwas?
@Component
@ControllerAdvice
public class ExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleBindException(final org.springframework.validation.BindException ex,
final HttpHeaders headers, final HttpStatus status, final WebRequest request) {
logger.info(ex.getClass().getName());
//
final List<String> errors = new ArrayList<String>();
for (final FieldError error : ex.getBindingResult().getFieldErrors()) {
errors.add(error.getField() + ": " + error.getDefaultMessage());
}
for (final ObjectError error : ex.getBindingResult().getGlobalErrors()) {
errors.add(error.getObjectName() + ": " + error.getDefaultMessage());
}
final ErrorMessage apiError = new ErrorMessage(HttpStatus.BAD_REQUEST, ex.getLocalizedMessage(), errors.toString());
return new ResponseEntity<>(apiError, new HttpHeaders(), HttpStatus.BAD_REQUEST);
}
}
Msg.properties
typeMismatch.demoPojo.instant= Supposed to be a date
typeMismatch.instant=Instant field
typeMismatch.java.time.Instant=Instant type
sollten nicht Ihre '@ Override' kommentierten Methode' handleBindException' auch mit '@ExceptionHandler (MethodArgumentNotValidException.class)' mit Anmerkungen versehen werden sollte? –