2010-08-13 15 views
14

समीक्षा के लिए अनुरोध मुझे यकीन नहीं था कि मैं इस तरह के प्रश्न पूछ सकता हूं, लेकिन मेटा स्टैक ओवरफ्लो पर this देखने के बाद, ऐसा लगता है कि इस तरह का सवाल ठीक है। खैर, मेरे प्रश्न पर:जावास्क्रिप्ट फॉर्म-सत्यापन फ्रेमवर्क:

कुछ महीने पहले मैंने जावास्क्रिप्ट में एक सत्यापन ढांचा लिखा था। मुझे पता है कि पहले से ही jQuery Validation जैसे सत्यापन फ्रेमवर्क मौजूद हैं, लेकिन मैं सत्यापन के लिए एक अलग दृष्टिकोण लेना चाहता था। वर्तमान दृष्टिकोण फॉर्म तत्वों पर सत्यापन करने के लिए जावास्क्रिप्ट कोड लिखने के साथ सौदा करते हैं। फॉर्म स्रोत कोड को देखकर, यह तुरंत स्पष्ट नहीं होता है कि प्रत्येक तत्व पर सत्यापन क्या होता है। कुछ हद तक इसका सीएसएस वर्गों का उपयोग करके उपचार किया जा सकता है जो विभिन्न प्रकार के सत्यापन निर्दिष्ट करते हैं। लेकिन मुझे लगा कि यह भी सीमित था क्योंकि आप वैधता (त्रुटि संदेश इत्यादि) के व्यवहार को आसानी से अनुकूलित नहीं कर सकते हैं। मैं JSR-303 Bean Validation या Hibernate Validator का उपयोग कर जावा में एनोटेशन-आधारित सत्यापन की तरह कुछ करना चाहता था।

चूंकि एचटीएमएल 5 आपको तत्वों में कस्टम विशेषताओं को जोड़ने की अनुमति देता है, इसलिए मुझे लगा कि मैं सत्यापन के लिए फॉर्म तत्वों को "एनोटेट" करने के लिए इसका लाभ उठा सकता हूं। तो, अनिवार्य रूप से, मैं इस के साथ आया था:

  • तत्वों है कि परिभाषित बाधाओं के लिए डोम परीक्षण करता है और इन बाधाओं बांधता:

    <input id = "myInput" 
         name = "myInput" 
         type = "text" 
         class = "regula-validation" 
         data-constraints = '@NotEmpty @IsNumeric @Between(min=1, max=5)' /> 
    
    इसे ध्यान में मूल विचार के साथ

    , मैं Javascript फ़्रेमवर्क कि बनाया तत्वों के लिए

  • कस्टम की कमी के निर्माण
  • की अनुमति देता है की कमी
  • पुष्टि बाध्य कमी के कार्यक्रम संबंधी बंधन की अनुमति देता है

इसके अलावा, ढांचा निम्नलिखित सुविधाएं होती हैं:

  • मान्यता समूहों, में निर्दिष्ट के समान JSR-303 त्रुटि संदेश

एक बार मैं अपने ढांचे बनाया के लिए

  • अंतर्वेशन मैंने फीडबैक प्राप्त करने और इसके लिए समीक्षा करने की कोशिश की लेकिन मुझे यकीन नहीं था कि फीडबैक और समीक्षा पाने के लिए कहां जाना है। मैंने इसके बारे में कुछ ब्लॉग पोस्ट लिखे और बिना किसी किस्मत के डिग और रेडडिट (प्रोग्रामिंग सेक्शन) पर पोस्ट किया। कुछ लोगों को दिलचस्पी दिखाई दे रही थी, लेकिन मुझे इससे ज्यादा कुछ नहीं मिला।

    हाल ही में, मेरे कार्यस्थल पर हम एक विरासत कोडेबेस (जेएसपी और सर्वलेट) का आधुनिकीकरण कर रहे हैं और इसे स्प्रिंग एमवीसी में ले जा रहे हैं। जब सत्यापन की बातचीत हुई, तो मैंने अपने वरिष्ठ वास्तुकार को अपना ढांचा लगाया। मैंने थोड़ा सा एकीकरण और अवधारणा का सबूत किया और वे दिलचस्पी लेते थे और मुझे परियोजना में जोड़ने के लिए आगे बढ़ते थे। अभी तक, मेरे पास केवल अपनी विनम्र राय थी कि यह सत्यापन करने का एक सहायक तरीका होगा, इसलिए इससे मुझे कुछ विश्वास दिलाया गया कि मेरे विचार और ढांचे में कुछ योग्यता हो सकती है। हालांकि, मुझे अभी भी कुछ और भागीदारी और ढांचे की आवश्यकता है। मुझे पता चला कि स्टैक ओवरफ्लो इस तरह के प्रश्नों की अनुमति देता है, मैंने कुछ रचनात्मक आलोचना, टिप्पणियां और प्रतिक्रिया प्राप्त करने के लिए इसे यहां पोस्ट करने का निर्णय लिया।

    तो बिना किसी देरी के, मैं Regula पेश करना चाहता हूं। मैंने जो लिंक प्रदान किया है वह गिटहब पर विकी पर जाता है जिसमें ढांचे के लिए सभी दस्तावेज हैं। आप here से नवीनतम संस्करण (v1.1.0) डाउनलोड कर सकते हैं।

    आपकी टिप्पणियों के लिए तत्पर हैं।

    कुछ अतिरिक्त जानकारी है कि तुरंत प्रासंगिक नहीं है

    मैं अपने ढांचे क्लाइंट साइड सत्यापन में सेम पर अर्थात वसंत के साथ एकीकृत करने, का अनुवाद सत्यापन एनोटेशन का विचार किया था। हाल ही में मैं इसे सत्यापन समूहों के साथ भी काम करने में सक्षम था (हालांकि क्लाइंट पक्ष के समूहों के बीच विरासत संबंधों के लिए वर्तमान में कोई समर्थन नहीं है)। इस तरह, आपको केवल सत्यापन की बाधाओं के साथ फ़ील्ड गुणों को एनोटेट करना होगा, और क्लाइंट-साइड सत्यापन-कोड स्वचालित रूप से जेनरेट किया जाता है। हालांकि, मैं एक वसंत नौसिखिया हूं और इसलिए मेरी विधि शायद साफ नहीं है। मैं इस पर कुछ फीडबैक भी प्राप्त करना चाहता हूं, इसलिए अगर कोई दिलचस्पी लेता है तो कृपया मुझे बताएं। आदर्श रूप से (और मुझे उम्मीद है कि मैं बहुत परेशान नहीं हूं) मैं वसंत लोगों से संपर्क करना चाहता हूं और देख सकता हूं कि वे इसमें रुचि रखते हैं या नहीं।

  • +0

    मेरे पास वास्तव में इसका उपयोग करने के लिए वास्तव में उपयोग करने का मामला नहीं है; लेकिन, मैं वोट और पसंदीदा होगा, क्योंकि यह एक अच्छी अवधारणा की तरह लगता है। मैं यह देखने के लिए उत्सुक हूं कि लोग इसके बारे में क्या करते हैं। वेब ढांचे, विकेट की मेरी पसंद ज्यादातर जावास्क्रिप्ट सत्यापन की आवश्यकता को समाप्त करती है, क्योंकि यह डेटा जमा करने और सर्वर से प्रतिक्रिया को AJAX अनुरोध के माध्यम से प्रतिक्रिया देने के लिए संकाय प्रदान करती है। मुझे पता है कि एएसपी.नेट जैसे अन्य ढांचे, गतिशील प्रतिक्रिया के लिए क्लाइंट-साइड सत्यापन को प्रोत्साहित करते हैं (हालांकि आपको हमेशा फॉर्म सबमिशन पर सर्वर सत्यापन करने की आवश्यकता है)। – RMorrisey

    +0

    @RMorrisey आपकी टिप्पणी के लिए धन्यवाद! मैंने विकेट की कोशिश नहीं की है, लेकिन मैं इसे कभी-कभी देखना चाहता हूं। मुझे लगता है कि जेएसएफ आपके द्वारा वर्णित कुछ भी करता है। काम पर हमारे पास कुछ सत्यापन है जो केवल सर्वर-साइड पर किया जाता है। मेरे ढांचे के साथ मैं आपके द्वारा वर्णित तरीके से क्लाइंट-साइड करने में सक्षम हूं। मेरे पास एक वैधकर्ता के साथ एक कस्टम बाधा है जो सत्यापन करने के लिए AJAX अनुरोध करता है। आपकी प्रतिक्रिया के लिए एक बार फिर धन्यवाद! –

    +0

    मुझे पता है कि यह विषय बंद है और इसके लिए ऑफ टाइम है, लेकिन आपने डेटा बाधाओं के लिए एनोटेशन कैसे इंजेक्शन दिया? मैं इस सवाल पर आया कि कुछ ऐसा कैसे करना है (रेगुला मेरी ज़रूरतों के मुकाबले ज्यादा है) –

    उत्तर

    7

    मुझे यह बहुत पहले से पसंद है, यह मेरे एचटीएमएल को साफ रखता है और कस्टम सत्यापनकर्ता बनाने की क्षमता बहुत बढ़िया है। एक बात मैं जोड़ा सत्यापन बंधन और कार्यों प्रस्तुत के लिए एक छोटी हाथ था, और एक jQuery प्लगइन के रूप में यह ऊपर लपेट:

    if (jQuery) { 
        (function($) 
        { 
         $.regula = function(formId, callback) 
         { 
          regula.bind(); 
    
          $("#" + formId).submit(function() 
          { 
           var validationResults = regula.validate(); 
    
           if (validationResults.length > 0) 
           { 
            if (callback) 
             callback(validationResults); 
    
            return false; 
           } 
    
           return true; 
          }); 
         }; 
        })(jQuery); 
    } 
    

    दरअसल, मैं सिर्फ blogged इसके बारे में है के रूप में मैं यह कैसे साफ प्रभावित हूँ और यह आसान है। मैं अभी भी आपके स्रोत के माध्यम से जाने का समय बिताने जा रहा हूं, यह देखने के लिए कि आपने इसे कैसे पूरा किया है, लेकिन यह एक महान शुरुआत है :)

    अपने ढांचे को एकीकृत करने के संबंध में, मैं ज्यादातर एएसपी.नेट एमवीसी के साथ काम करता हूं, और यह होगा यह देखने के लिए दिलचस्प रहें कि यह क्लाइंट-साइड बाधाओं में सर्वर-साइड सत्यापन तर्क का अनुवाद कैसे करता है। अगले महीने या तो मैं कुछ देख सकता हूं।

    +0

    फीडबैक और ब्लॉग पोस्ट मैथ्यू के लिए धन्यवाद! मैं ज्यादातर चीजों के जावा पक्ष पर काम करता हूं; मैंने .NET कभी नहीं किया है, लेकिन मुझे इसमें देखने में दिलचस्पी होगी! –

    +1

    मैं इसके साथ कुछ और खेल रहा हूं और .NET के डेटा एन्नोटेशन नेमस्पेस द्वारा प्रदान किए गए विशेषताओं के आधार पर डेटा बाधाओं को स्वचालित रूप से उत्पन्न करने का एक तरीका मिला है। मुझे पता है कि आप जावा दोस्त हैं, लेकिन यदि आप यह देखने में रुचि रखते हैं कि मैंने यह कैसे किया है, तो मैं आज रात एक उदाहरण के साथ अपना ब्लॉग अपडेट कर दूंगा। मैं कल्पना करता हूं कि वसंत में बीन्स के साथ ऐसा करने की अवधारणा जावा स्वाद के बावजूद अनिवार्य रूप से समान है ... –

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