我创建了一个自定义批注,以验证文本不包含特殊字符,但是当此字段确实包含特殊字符时,我想显示错误代码。 例如:
@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中放入注释的代码?
谢谢!