Ich arbeite an einer Java-Feder-MVC-Anwendung. Ich habe eine benutzerdefinierte Validierungsannotation für die Validierung einiger Zeichenfolgen (zum Beispiel) implementiert. Dies ist meine Anmerkung Körper:Java-Spring-Validierung - Feldtyp für benutzerdefinierte Validierung Annotation
@Documented
@Constraint(validatedBy = PhoneValidator.class)
@Target({ ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Phone {
String message() default "{validation.phone}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Und das ist meine PhoneValidator
Klasse:
public class PhoneValidator implements ConstraintValidator<Phone, String> {
@Override
public void initialize(Phone a) {
}
@Override
public boolean isValid(String phone, ConstraintValidatorContext cvc) {
//my logic for validating the phone
}
}
Dies funktioniert und ich kann @Phone
oben auf jedes Feld Modell setzen. Aber mein Problem ist Entwickler kann diese Anmerkung oben auf "irgendein" Modellfeld setzen und ich möchte nicht dieses irgendein! In der Tat, ich möchte Entwickler kann diese Anmerkung nur auf die String Felder setzen. Gibt es das überhaupt, um das zu tun?