2013-03-06 6 views
5

मैं जावा और खेलने के लिए नया हूं। नमूना अनुप्रयोगों के माध्यम से जा रहा है। क्या आप यह समझने में मेरी सहायता कर सकते हैं कि यह इस फ़ाइल में क्या चल रहा है। https://github.com/playframework/Play20/blob/master/samples/java/forms/app/models/User.javaप्ले फ्रेमवर्क @Required

मुझे समझ में नहीं आता कि हम इस इंटरफ़ेस को "सार्वजनिक इंटरफ़ेस सभी {}" क्यों घोषित करते हैं और इस सत्यापन में इसका उपयोग कैसे किया जा रहा है। "@Required (समूह = {All.class, Step1.class})"

उत्तर

11

@Required एक कस्टम JSR-303 एनोटेशन है, जो प्ले फ्रेमवर्क के भीतर बनाया गया है। जेएसआर -303 जावबीन्स के सत्यापन के लिए एक विनिर्देश है, जो यह सुनिश्चित करने के लिए अनुमति देता है कि दिए गए जावा बीन के मान बाधाओं के सेट के भीतर आते हैं। कुछ मानक सत्यापन एनोटेशन के उदाहरण:

  • @Max - एनोटेट तत्व एक नंबर जिसका मूल्य कम या निर्दिष्ट अधिकतम के बराबर होना चाहिए होना चाहिए।
  • @Min - एनोटेटेड तत्व एक संख्या होना चाहिए जिसका मूल्य निर्दिष्ट न्यूनतम के बराबर या बराबर होना चाहिए।
  • @NotNull - एनोटेटेड तत्व शून्य नहीं होना चाहिए।

प्रत्येक JSR-303 एनोटेशन समूहों, जहां प्रत्येक समूह वास्तव में सिर्फ एक वर्ग है परिभाषित करने के लिए अनुमति दी है। इन समूहों का उपयोग किसी दिए गए बीन के सत्यापन के सबसेट को निष्पादित करने के लिए किया जा सकता है। आपके विशेष उदाहरण में, कार्यान्वयनकर्ताओं ने इन समूहों का प्रतिनिधित्व करने के लिए दो इंटरफेस परिभाषित किए हैं - All और Step1। फिर वे समूह को मान्यताओं एनोटेशन में जोड़ते हैं, यह इंगित करने के लिए कि वे मान्यताओं समूह से संबंधित हैं। तो नीचे वर्ग के लिए:

validator.validate(bean, All.class); 

जबकि निम्नलिखित (username क्षेत्र के लिए) केवल @Required सत्यापन निष्पादित करेंगे:

public class MyBean { 
    @Required(groups = {All.class, Step1.class}) 
    @MinLength(value = 4, groups = {All.class}) 
    public String username; 
} 

MyBean bean = new MyBean(); 
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
Validator validator = factory.getValidator(); 

निम्नलिखित @Required और @MinLength सत्यापन username क्षेत्र के लिए निष्पादित करेंगे:

validator.validate(bean, Step1.class); 
+0

धन्यवाद, यह बहुत उपयोगी था। – vinos

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