0
我有我需要在ConstraintValidation没有得到应用到列表
@KeyValid
@Valid
protected List<KeyValue> keyValues;
运行一些验证对象的名单,我必须为它创造了以下注释:
@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = KeyValidator.class)
public @interface KeyValid{
String message() default "invalid_parameter_default_message";
String[] checks() default {};
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
这是我的验证器:
public class KeyValidator implements ConstraintValidator<KeyValid, KeyValue> {
@Override
public void initialize(KeyValid keyValid) {
}
@Override
public boolean isValid(KeyValue keyValue, ConstraintValidatorContext constraintValidatorContext) {
return true;
}
}
我读过的地方可以批量验证集合,如果列表或地图或者设置是通过定制约束注释,那么所有的集合中的元素的调用验证,但上面的代码引发以下错误
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'com.util.Validators.KeyValid' validating type 'java.util.List<com.model.KeyValue>'. Check configuration for 'keyValue'
不幸的是我现在被Java 7困住了,但是我没有读过关于参数声明中的注释。看起来不错。但是有什么办法可以用Java 7做些什么,而且我也不能直接将注释添加到类中,因为它是生成的源。 –
您可以使用Hibernate Validator API进行编程约束声明,以将约束添加到“KeyValue”的类定义中。这样你就不需要触摸它的源代码,只需通过'@ Valid'验证列表即可。 – Gunnar