我正在try 为某些类创建自定义验证器 我定义的约束如下(根据不同的样本,例如从here)
@Target({ TYPE, ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { MyClassValidator.class })
@Documented
public @interface MyClassValid {
String message() default "The password2 does not comply with the rules";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
然后我创建了相应的验证器:
public class MyClassValidator implements ConstraintValidator<MyClassValid, ChangePasswordBody> {
@Override
public boolean isValid(ChangePasswordBody value, ConstraintValidatorContext context) {
/*This check only for sample . Ot can be replaced by other logic*/
if (value.getNewPassword().length() > 2 ) {
return true;
}
return false;
}
}
要验证的类:
@MyClassValid
public class ChangePasswordBody {
private String oldPassword;
private String newPassword;
public String getOldPassword() {
return oldPassword;
}
public void setOldPassword(String oldPassword) {
this.oldPassword = oldPassword;
}
public String getNewPassword() {
return newPassword;
}
public void setNewPassword(String newPassword) {
this.newPassword = newPassword;
}
}
这是使用ChangePasswordBody的代码
private static void testChangePwd(ApplicationContext applicationContext) {
//...
ChangePasswordBody pwdBody = new ChangePasswordBody();
isValidPassword(pwdBody);
//...
}
private static void isValidPassword(ChangePasswordBody pwdBody) {
pwdBody.setNewPassword("l");
}
我看到在执行testChangePwd
方法时-MyClassValidator.isValid没有被调用.代码中有什么遗漏/错误吗?提前谢谢你