2013-10-23 8 views
8

कौन सा एनोटेशन मैं हाइबरनेट मान्यकरण एक स्ट्रिंग को मान्य करने के लिए उपयोग करना होगा निम्नलिखित को लागू करने के लिए:संख्या स्ट्रिंग को हाइबरनेट के साथ अंकों के रूप में कैसे सत्यापित करें?

//should always have trimmed length = 6, only digits, only positive number 
@NotEmpty 
@Size(min = 6, max = 6) 
public String getNumber { 
    return number.trim(); 
} 

मैं अंकों का सत्यापन कैसे लागू कर सकते हैं? क्या मैं अभी @Digits(fraction = 0, integer = 6) का उपयोग करूंगा?

उत्तर

11

आप अपनी सभी बाधाओं को एक @Pattern(regexp="[\\d]{6}") से प्रतिस्थापित कर सकते हैं। यह लंबाई छह की एक स्ट्रिंग का अर्थ होगा जहां प्रत्येक चरित्र एक अंक है।

6

आप अपनी खुद की हाइबरनेट सत्यापन एनोटेशन भी बना सकते हैं।
नीचे दिए गए उदाहरण में मैंने EnsureNumber नाम के साथ एक सत्यापन एनोटेशन बनाया है। इस एनोटेशन वाले फ़ील्ड्स isValidEnsureNumberValidator कक्षा के विधि के साथ मान्य होंगे।

@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; 
संबंधित मुद्दे

 संबंधित मुद्दे