1 回答

TA貢獻1906條經(jīng)驗 獲得超3個贊
沒有直接驗證該字段的注釋。自定義注釋的想法@URL
是完全有效的,但您必須自己實現(xiàn)驗證 - 注釋只是“應(yīng)該發(fā)生的事情”的標記。
我建議你重命名@URL
為@URLCollection
以避免與類沖突java.net.URL
。從定義注釋開始。不要忘記注解@Constraint
(查看其文檔以了解如何正確定義自定義驗證注解):
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UrlCollectionValidator.class) // will be created below
public @interface URLCollection {
String message() default "default error message";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
然后繼續(xù)執(zhí)行ConstraintValidator:
public class UrlCollectionValidator implements ConstraintValidator<URLCollection, Collection<String>> {
@Override
public void initialize(URLCollectionconstraint) { }
@Override
public boolean isValid(Collection<String> urls, ConstraintValidatorContext context) {
return // the validation logics
}
}
嗯,就是這樣。在 Spring 文檔中的配置自定義約束中閱讀有關(guān)此內(nèi)容的更多信息:
每個 bean 驗證約束由兩部分組成: *@Constraint聲明約束及其可配置屬性的注釋。* 實現(xiàn)javax.validation.ConstraintValidator約束行為的接口的實現(xiàn)。
添加回答
舉報