我将尝试为您实现它(即使我没有IDE)。
里面
ConstraintValidator#initialize
您可以获取配置字段的名称,其中
不能
是
null
.
@Override
public void initialize(final CombinedNotNull combinedNotNull) {
fields = combinedNotNull.fields();
}
里面
ConstraintValidator#isValid
您可以使用这些字段的名称来检查
Object
领域。
@Override
public boolean isValid(final Object value, final ConstraintValidatorContext context) {
final BeanWrapperImpl beanWrapper = new BeanWrapperImpl(value);
for (final String f : fields) {
final Object fieldValue = beanWrapper.getPropertyValue(f);
if (fieldValue == null) {
return false;
}
}
return true;
}
注释:
@Retention(RUNTIME)
@Target({ TYPE, ANNOTATION_TYPE })
@Constraint(validatedBy = CombinedNotNullValidator.class)
public @interface CombinedNotNull {
String message() default "username or email is required";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
/** Fields to validate against null. */
String[] fields() default { };
}
注释可以应用为
@CombinedNotNull(fields = {
"fieldName1",
"fieldName2"
})
public class MyClassToValidate { ... }
要了解如何创建类级约束注释,请始终参考官方文档。
Docs