感谢@Honey戈亚尔 下面是我的方式
@Documented
@Constraint(validatedBy = { AllowedIntegerValuesValidator.class})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@ReportAsSingleViolation
public @interface AllowedValues {
String message() default "";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
String[] value() default { };
}
public class AllowedIntegerValuesValidator implements ConstraintValidator<AllowedValues, Integer> {
private List<Integer> valueList;
@Override
public void initialize(AllowedValues constraintAnnotation) {
valueList = new ArrayList<>();
for (String val : constraintAnnotation.value()) {
valueList.add(Integer.parseInt(val));
}
}
@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {
if (!valueList.contains(value)) {
return false;
}
return true;
}
}
@AllowedValues(value={"7","9"}, message="only could be 7 or 9")
private int location;
是啊,'\t @Pattern(正则表达式= “^ [79] $”) \t private int location; '当运行junit测试时抛出'javax.validation.UnexpectedTypeException:HV000030:对于约束'javax.validation.constraints.Pattern'验证类型'java.lang.Integer',找不到验证器。根据原因检查“位置”的配置 – zhuguowei 2016-01-10 06:41:31