आप अपनी खुद की हाइबरनेट सत्यापन एनोटेशन भी बना सकते हैं।
नीचे दिए गए उदाहरण में मैंने EnsureNumber
नाम के साथ एक सत्यापन एनोटेशन बनाया है। इस एनोटेशन वाले फ़ील्ड्स isValid
EnsureNumberValidator
कक्षा के विधि के साथ मान्य होंगे।
@Constraint(validatedBy = EnsureNumberValidator.class)
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface EnsureNumber {
String message() default "{PasswordMatch}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
boolean decimal() default false;
}
public class EnsureNumberValidator implements ConstraintValidator<EnsureNumber, Object> {
private EnsureNumber ensureNumber;
@Override
public void initialize(EnsureNumber constraintAnnotation) {
this.ensureNumber = constraintAnnotation;
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
// Check the state of the Adminstrator.
if (value == null) {
return false;
}
// Initialize it.
String regex = ensureNumber.decimal() ? "-?[0-9][0-9\\.\\,]*" : "-?[0-9]+";
String data = String.valueOf(value);
return data.matches(regex);
}
}
आप इसे इस तरह उपयोग कर सकते हैं,
@NotEmpty
@Size(min = 6, max = 6)
@EnsureNumber
private String number1;
@NotEmpty
@Size(min = 6, max = 6)
@EnsureNumber(message = "Field number2 is not valid.")
private String number2;
@NotEmpty
@Size(min = 6, max = 6)
@EnsureNumber(decimal = true, message = "Field number is not valid.")
private String number3;
स्रोत
2016-04-28 09:09:42