Giriş
Şu satırı dahil ederiz.
Şöyle yaparız. İlk template tipi anotasyon ismini gösterir. İkinci tip ise isValid metoduna geçilecek tipi gösterir.
Şöyle yaparız.
Şu satırı dahil ederiz.
import javax.validation.ConstraintValidator;
ÖrnekŞöyle yaparız. İlk template tipi anotasyon ismini gösterir. İkinci tip ise isValid metoduna geçilecek tipi gösterir.
public class CityValidator implements ConstraintValidator<City, String> {
// ...
}
public class TestClass {
@City
String city;
// ...
}
ÖrnekŞöyle yaparız.
public class UniqueEmailValidator implements ConstraintValidator<UniqueEmail, String> {
private UserRepository userRepository;
public UniqueEmailValidator(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public boolean isValid(String email, ConstraintValidatorContext context) {
return !userRepository.findByEmail(email).isPresent();
}
}
ÖrnekÖnce kullanacağımız anotasyonu tanımlarız. Şöyle yaparız.
- @Documented ile bu anotasyonun javadoc içinde olması sağlanır.
- @Constraint ile kullanılacak validator belirtilir.
- @Target ile bu anotasyonun nerede kullanılabileceği belirtilir.
- @Retention RUNTIME yapılır
- message() metodu içinde hata mesajı belirtilir.
import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.Documented;import java.lang.annotation.Retention;import java.lang.annotation.Target;import static java.lang.annotation.ElementType.FIELD;import static java.lang.annotation.ElementType.PARAMETER;import static java.lang.annotation.RetentionPolicy.RUNTIME;@Documented@Constraint(validatedBy = CustomerIdValidator.class)@Target({FIELD, PARAMETER})@Retention(RUNTIME)public @interface CustomerId {String message() default "Invalid Customer Id";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};}
Daha sonra anotasyon bir POJO ile kullanılır. Şöyle yaparız.
public class Person {@CustomerIdprivate final String customerId;...}
Validator için şöyle yaparız
import javax.validation.ConstraintValidator;import javax.validation.ConstraintValidatorContext;public class CustomerIdValidator implements ConstraintValidator<CustomerId, String> {@Overridepublic boolean isValid(String customerId,
ConstraintValidatorContext constraintValidatorContext) {if(!customerId.isEmpty() && customerId.matches(Constants.CUSTOMER_ID_REGEX)) {log.info("Received valid customerId of type 'UUID'");return true;} else {log.error("Received invalid customerId");return false;}}}
Hiç yorum yok:
Yorum Gönder