Я создал пользовательскую аннотацию, которая проверяет, что текст не содержит специальных символов, но я хочу отобразить код ошибки, когда это поле содержит специальные символы.
Например:
@NoSpecialCharacters(code = 125412, message = "name field should not contain special characters")
String name;
Это пример моего кода.
Я создал аннотацию с помощью constraintValidator, поскольку для RestAdviceController он содержит следующий код:
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(final MethodArgumentNotValidException ex, final HttpHeaders headers, final HttpStatus status, final WebRequest request) {
//
final List<String> errors = new ArrayList<String>();
for (final FieldError error : ex.getBindingResult().getFieldErrors()) {
errors.add(error.getField() + ": " + error.getDefaultMessage());
}
final ApiError apiError = new ApiError(HttpStatus.BAD_REQUEST, ex.getLocalizedMessage(), errors);
return handleExceptionInternal(ex, apiError, headers, apiError.getStatus(), request);
}
проблема здесь в том, что fieldError содержит список аргументов, но они являются массивом объектов. Я не могу извлечь точно код ошибки, который я вставил в аннотацию.
Как я могу прочитать код, который я вставил в аннотацию здесь, в RestAdviceController?
Спасибо!