Dropwizard:1.X-我可以让跨参数方法验证工作吗



注释:

@Target({METHOD, CONSTRUCTOR, PARAMETER, FIELD})
@Documented
@Constraint(validatedBy = AtLeastOneNotNullValidator.class)
@Retention(RUNTIME)
public @interface AtLeastOneNotNull {
String message () default "{com.validationError}";
Class<?>[] groups () default {};
Class<? extends Payload>[] payload () default {};
String[] fieldNames();
}

验证器(当前总是故意返回false(:

@SupportedValidationTarget(ValidationTarget.PARAMETERS)
public class AtLeastOneNotNullValidator implements ConstraintValidator<AtLeastOneNotNull, String[]> {
private String[] fieldNames;
@Override
public void initialize(AtLeastOneNotNull constraintAnnotation) {
this.fieldNames = constraintAnnotation.fieldNames();
}
@Override
public boolean isValid(String[] value, ConstraintValidatorContext context) {
return false;
}
}

方法:

// within some class
@Valid
@AtLeastOneNotNull(fieldNames = {"userName", "companyName"})
private List<SomeObj> findAll(@Valid String userName, @Valid String companyName, String token) {...}

不管怎样,我似乎都无法让它发挥作用。我错过了什么?

在类声明之前添加@Validated(org.springframework.validation.annotation.Validated;(对我来说很有效。

例如

@Service
@Validated
public class CourseService {
...
}