【发布时间】:2018-01-29 11:29:09
【问题描述】:
我有一个自定义注解@UniqueModel,由ConstraintValidator 验证:
@Component
public class UniquePlaceValidator implements ConstraintValidator<UniqueModel, Model> {
@Autowired
private ModelRepository repository;
public UniqueModelValidator() {
}
public void initialize(UniqueModel constraint) {
}
@Override
public boolean isValid(Model model, ConstraintValidatorContext context) {
if (repository == null)
return true;
Model dbModel = repository.findByNameAndMail(model.getName(), model.getMail());
return dbModel == null;
}
问题是,我需要在调用存储库的 safe() 方法之前进行验证,否则字段注入将不起作用。
为此,我创建了一个带有@Valid-annotation 的委托方法,以便在之前强制进行唯一验证:
Model save(@Valid Model model {
return repository.save(model);
}
不幸的是,这不起作用,似乎 @Valid-annotation 被 Spring 忽略了。
如何确保验证的正确时间?
【问题讨论】:
-
您也可以发布您的弹簧配置吗?仅有 bean 验证约束是不够的。您可能需要进行额外的配置。
标签: java spring hibernate validation