Мне нужно перетащить через поле значение атрибута из аннотации @ Size
private static int getMaxLimitSize(Field field){
field.setAccessible(true);
Size annotation = field.getAnnotation(Size.class);
int zero = 0;
if(annotation == null) return zero;
return annotation.max();
}
, здесь есть ограничение @ Size для объекта типа dtofield
@Size(message = "{validate.documentid.size}", max = 36)
private String documentId;
Но когда я пытаюсь получить аннотацию, я получаю null
Size annotation = null;
Эта аннотация находится над объектами типа dto и не обрабатывается, но когда обрабатывается сущность , эта аннотация видна? !!!
с использованием Spring Boot
ошибка сообщения находятся в файле - ValidationMessages.propertie s
@Configuration
public class ServiceConfig implements WebMvcConfigurer {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource source = new ResourceBundleMessageSource();
source.setDefaultEncoding("UTF-8");
source.setBasename("classpath:ValidationMessages");
return source;
}
@Nullable
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource(messageSource());
return validator;
}
}
Вот что передается в методе - getMaxLimitSize () ,Тип Поле
private static void processLimitValidateForField(Field field, Object object, List<Object> values){
Class<?> type = field.getType();
String typeName = type.getSimpleName();
boolean isTypeClassOfString = isStringType(typeName);
int limitString = 0;
if(isTypeClassOfString){
limitString = getMaxLimitSize(field);
setValue(field, typeName, object, values, limitString);
} else {
setValue(field, typeName, object, values, limitString);
}
}
Пожалуйста, объясните, почему объект dto не виден валидатору или почему отражение не видит аннотацию валидатора и что можно сделать?
Как это можно исправить