2012-05-02 11 views
39

BindingResult केवल दृश्य के साथ अपवादों को बांधने के लिए उपयोगी है, या कुछ और?वसंत एमवीसी में बाइंडिंग रिसैट इंटरफ़ेस का उपयोग क्या है?

BindingResult का सटीक उपयोग क्या है?

या यह दृश्य के साथ बाध्यकारी मॉडल विशेषता में उपयोगी है।

उत्तर

35

विशेष उदाहरण: एक नियंत्रक के अंदर एक Validator की एक सत्यापित करें विधि के लिए एक तर्क के रूप में एक BindingResult वस्तु का उपयोग करें।

उसके बाद, आप इस वस्तु की जांच कर सकते सत्यापन त्रुटियों की तलाश:

validator.validate(modelObject, bindingResult); 
if (bindingResult.hasErrors()) { 
    // do something 
} 
+5

यह लिंक पूरी तरह से दिखाता है कि हम बाइंडिंग रीसेट का उपयोग क्यों करते हैं http://codetutr.com/2013/05/28/spring-mvc-form-validation/ – keshav

+1

मुझे अभी भी यह नहीं मिला है कि हम वास्तव में क्या बाध्यकारी हैं –

8
आधिकारिक Spring documentation से

:

जनरल इंटरफ़ेस बाध्यकारी परिणाम प्रतिनिधित्व करता है। त्रुटि पंजीकरण क्षमताओं के लिए इंटरफ़ेस का विस्तार, एक सत्यापनकर्ता लागू करने के लिए के लिए अनुमति देता है, और बाध्यकारी विशिष्ट विश्लेषण और मॉडल इमारत कहते हैं।

एक DataBinder, विधि DataBinder.getBindingResult() के माध्यम से प्राप्त करने के लिए परिणाम धारक के रूप में कार्य करता है। BindingResult कार्यान्वयन का भी सीधे उपयोग किया जा सकता है, उदाहरण के लिए (उदाहरण के लिए यूनिट परीक्षण के भाग के रूप में) पर एक वैलिडेटर का आह्वान करने के लिए।

+1

Thnaks .... मैं इस ढांचे को नया हूँ। क्या आप इसे सरल बना सकते हैं ... ???? – JOHND

+3

@Ajinkya: आप स्प्रिंग 2.0 डॉक्स के अलावा कुछ और उद्धरण भी दे सकते हैं। – skaffman

4

BindingResult सत्यापन के लिए प्रयोग किया जाता है ..

उदाहरण: -

public @ResponseBody String nutzer(@ModelAttribute(value="nutzer") Nutzer nutzer, BindingResult ergebnis){ 
     String ergebnisText; 
     if(!ergebnis.hasErrors()){ 
      nutzerList.add(nutzer); 
      ergebnisText = "Anzahl: " + nutzerList.size(); 
     }else{ 
      ergebnisText = "Error!!!!!!!!!!!"; 
     } 
     return ergebnisText; 
    } 
6

मूल रूप से BindingResult एक है इंटरफ़ेस जो निर्देश देता है कि सत्यापन के परिणाम को संग्रहीत करने वाले ऑब्जेक्ट को परिणाम के परिणाम को पुनर्प्राप्त और पुनर्प्राप्त करना चाहिए सत्यापन

(त्रुटियों, प्रयास को अनुमति नहीं दी क्षेत्रों आदि करने के लिए बाध्य करने के लिए) Spring MVC Form Validation with Annotations Tutorial से:

[BindingResult] स्प्रिंग की वस्तु है कि सत्यापन का परिणाम रखती है और बाध्यकारी और त्रुटियों है कि हुआ हो सकता है शामिल हैं। BindingResult मान्य किए गए मॉडल ऑब्जेक्ट के ठीक बाद आना चाहिए या अन्यथा स्प्रिंग ऑब्जेक्ट को सत्यापित करने में विफल हो जाएगी और अपवाद फेंक देगा।

जब वसंत @Valid देखता है, तो यह ऑब्जेक्ट को सत्यापित करने के लिए सत्यापनकर्ता को खोजने का प्रयास करता है। यदि आपके पास "एनोटेशन-संचालित" सक्षम है तो स्प्रिंग स्वचालित रूप से सत्यापन एनोटेशन को उठाती है। वसंत तो सत्यापनकर्ता को आमंत्रित करता है और BindingResult और में किसी भी त्रुटि को दृश्य मॉडल में BindingResult जोड़ता है।

12

यह ध्यान रखना महत्वपूर्ण है कि पैरामीटर का क्रम वास्तव में वसंत के लिए महत्वपूर्ण है। बाध्यकारी परिणाम को उस फॉर्म के ठीक बाद आने की जरूरत है जिसे सत्यापित किया जा रहा है। इसी तरह, [वैकल्पिक] मॉडल पैरामीटर को बाइंडिंग रीसेट के बाद आने की आवश्यकता है। उदाहरण:

मान्य:

@RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) 
public String updateEntryQuantity(@Valid final UpdateQuantityForm form, 
            final BindingResult bindingResult, 
            @RequestParam("pk") final long pk, 
            final Model model) { 
} 

वैध नहीं:

आपके उत्तर लेकिन खेद मैं नहीं मिल रहा है कि तुम क्या लिखा है के लिए
RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) 
public String updateEntryQuantity(@Valid final UpdateQuantityForm form, 
            @RequestParam("pk") final long pk, 
            final BindingResult bindingResult, 
            final Model model) { 
} 
संबंधित मुद्दे