Пример того, чего я хочу достичь:
Код: Выделить всё
@Component
public class EmailExistsValidator implements ConstraintValidator {
private final UserRepo userRepo;
@Autowired
public EmailExistsValidator(UserRepo userRepo) {
this.userRepo = userRepo;
}
@Override
public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
//check email does not exist logic here
}
}
Я прошел:
- Autowired Repository в пользовательском валидаторе ограничений имеет значение NULL.
- Spring Boot: репозиторий не подключается автоматически в пользовательском валидаторе.
- Все вопросы, указанные выше, являются возможными решениями.
- Все вопросы, указанные выше, являются возможными решениями
- li>
Еще несколько вопросов, которые, к сожалению, я больше не могу найти. - Я попробовал получить WebApplicationContext, чтобы использовать AutowireCapableBeanFactory.autowireBean() для автоматического связывания аннотированных полей. Неудивительно, что контекст был нулевым, когда vaadin создавал экземпляр или управлял им, поэтому это не сработало.
Код: Выделить всё
@Component
public class EmailExistsValidator implements ConstraintValidator {
private static UserRepo repo;
private final UserRepo userRepo;
public EmailExistsValidator() {
this.userRepo = repo;
}
@Bean
public static UserRepo setRepo(UserRepo userRepo) {
repo = userRepo;
return repo;
}
@Override
public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
//validation logic
}
}
Как настроить vaadin для использования управляемых Spring ConstraintValidator , а не управляемые ваадином? Или как я могу автоматически связать компоненты пружины в ConstraintValidator, созданных и управляемых vaadin?
Подробнее здесь: https://stackoverflow.com/questions/738 ... -validator
Мобильная версия