Я обнаружил проблему.
В моем классе TimeRangeValidator у меня был следующий код:
//HERE WAS THE PROBLEM
public class TimeRangeValidator implements ConstraintValidator<TimeRangeConstraints,String> {
//--------------------------------------------------------------------------------->
private String fechaEvento;
private String horaInicial;
private String horaFinal;
@Autowired
private UsuarioSalonRepository usuarioSalon;
@Override
public void initialize(TimeRangeConstraints constraintAnnotation) {
this.fechaEvento = constraintAnnotation.fechaEvento();
this.horaInicial = constraintAnnotation.horaInicio();
this.horaFinal = constraintAnnotation.horaCulminacion();
}
//// MORE AND MOREEE CODE....////
Мне пришлось заменить строку на Объект
public class TimeRangeValidator implements ConstraintValidator<TimeRangeConstraints,Object>
и проблема исчезла.
Более глубокое объяснение для тех, кто не понял, что произошло
TimeRangeValidator занимает 3 поляиз формы для выполнения проверки логики.Значение, которое было изменено ранее, не позволило мне взять 3 поля формы по следующей причине:
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
Object dt = new BeanWrapperImpl(value).getPropertyValue(fechaEvento);
Object hInit = new BeanWrapperImpl(value).getPropertyValue(horaInicial);
Object hFin = new BeanWrapperImpl(value).getPropertyValue(horaFinal);
SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd");
try {
Date dia = form.parse(dt.toString().replaceAll("/","-"));
return TimeUtils.detectOverlappingEvents(usuarioSalon.buscarEvento(dia),
hInit.toString().replaceAll("\\s","")+":00",
hFin.toString().replaceAll("\\s","")+":00");
} catch (ParseException e) {
e.printStackTrace();
return false;
}
С объектом типа у меня может быть возможность (с помощью BeanWrapperImpl) получить несколькозначения формы для их проверки.
Обычно для проверки отдельного значения формы используется тип String (или Integer, что угодно).