java - जेएसएफ: जेएसआर 303 बीन प्रमाणीकरण-गेटटर पर क्यों नहीं और सेटटर नहीं?




jsf bean-validation (2)

मुझे समझ में नहीं आ रहा है कि जेएसआर 303 (बीन सत्यापन) गेटटर विधियों के लिए क्यों नहीं है और सेटटर नहीं है? क्या इसे सेटटर विधि के तहत रखना अधिक तर्कसंगत नहीं है क्योंकि यह एक क्षेत्र में प्रवेश बिंदु है और इससे पहले सत्यापन की जांच की जानी चाहिए?


इस कोड पर विचार करें:

public class BeanValidation {

    private int nameSetCount = 0;
    private int nameGetCount = 0;
    private String name;

    public String getName() {
        this.nameGetCount++;
        return name;
    }

    public void setName(String name) {
        this.nameSetCount++;
        this.name = name;
    }

}

private String name; पर एनोटेशन private String name;

एनोटेशन फ़ील्ड को आसानी से फ़ील्ड को आसानी से पहचानता है।

public String getName() पर एनोटेशन डालें

एनोटेशन आसानी से लौटे हुए क्षेत्र को देखकर फ़ील्ड की पहचान करता है।

public void setName(String name)

एनोटेशन संशोधित क्षेत्र को देखकर फ़ील्ड की पहचान नहीं कर सकता क्योंकि वहां एक से अधिक हो सकते हैं।


गेटर्स को एनोटेट करने का मतलब यह नहीं है कि जब गेटर का आह्वान किया जाता है तो सत्यापन किया जाता है। इसका उपयोग उस संपत्ति की पहचान करने के लिए किया जाता है जिस पर एक बाधा लागू होगी।

(आमतौर पर निजी) फ़ील्ड (आमतौर पर निजी) फ़ील्ड पर बाधा डालने का बड़ा लाभ यह है कि बाधाएं इस तरह के सार्वजनिक एपीआई का हिस्सा हैं। वे जेनरेट किए गए जावाडोक में भी जोड़े जाएंगे। एक प्रकार का उपयोगकर्ता जानता है कि जिस तरह से बाधाएं इसके आंतरिक कार्यान्वयन को देखे बिना लागू होती हैं।

एनोटेटिंग गेटर्स का एक अन्य लाभ यह है कि बाधाओं को बेस क्लास या इंटरफेस पर तरीकों से रखा जा सकता है और किसी भी उप-प्रकार / कार्यान्वयन के लिए भी आवेदन किया जा सकता है।





bean-validation