2012-01-26 13 views
5

मैं स्प्रिंग 3 पोर्टलेट एमवीसी का उपयोग कर रहा हूं। केवल एमवीसी में सत्यापन/बाध्यकारी एक जैसा होना चाहिए।@RequestParam के लिए BindingResult प्राप्त करने का कोई तरीका?

मुझे केवल एक ही int फॉर्म फ़ील्ड मिला है। मैं

void doSmth(MyForm form, BindingResult bindingResult) throws ... { 
    int bindErrors = bindingResult.getErrorCount()) 
    ... 

जब कर रहा हूँ और एक फ़ील्ड मान कि int के रूप में पार्स नहीं किया जा सकता इस विधि मार डाला जाता है और bindErrors 1. प्रपत्र फ़ील्ड मान है कि इस विधि को प्राप्त करता है 0. बहुत बढ़िया है प्रस्तुत करने।

लेकिन एक फ़ील्ड रखने के लिए सिर्फ एक फॉर्म बनाना बहुत अच्छा नहीं है।

मैं करने के लिए कोड बदल रहा हूँ:

void doSmth(@RequestParam int userId, BindingResult bindingResult) ... { 
    int bindErrors = bindingResult.getErrorCount()) 
    ... 

और ब्राउज़र में Portlet उपलब्ध नहीं संदेश मिल रहा है और इस अपवाद:

org.springframework.web.portlet.FrameworkPortlet ProcessRequest किया जा सका पूर्ण अनुरोध नहीं org.springframework.beans.TypeMismatchException: प्रकार 'java.lang.String' प्रकार के मूल्य को आवश्यक प्रकार 'int' में परिवर्तित करने में विफल; नेस्टेड अपवाद java.lang.NumberFormatException है: इनपुट स्ट्रिंग के लिए: "q"

प्रश्न: वहाँ विधि निष्पादन के साथ आगे बढ़ना है और यहां तक ​​कि अगर @RequestParam रूपांतरण विफल रहता है उस में बाध्यकारी त्रुटियों पर कार्रवाई करने के लिए किसी भी तरह है? मैंने @RequestParam बनाने की आवश्यकता नहीं है और इसके लिए एक डिफ़ॉल्ट मूल्य प्रदान करने की कोशिश की - मदद नहीं की।

उत्तर

3

वसंत संदर्भ केवल आदेश या फ़ॉर्म ऑब्जेक्ट्स के लिए बाइंडिंग रीसेट को अनुमति देता है।

org.springframework.validation.Errors/एक पूर्ववर्ती आदेश या प्रपत्र वस्तु (तुरंत पूर्ववर्ती विधि तर्क) के लिए org.springframework.validation.BindingResult सत्यापन का परिणाम है।

(15.3.2.3 Supported handler method arguments and return types)

तो आप अपने खुद के द्वारा इसे लागू करने की आवश्यकता हो सकती।

  • मुझे लगता है कि जब आप किसी कस्टम MethodArgumentResolver (उदाहरण के लिए इस blog देखें) इस्तेमाल करने की कोशिश कर सकते हैं।
  • एक अन्य वर्तमान अभी भी खुला स्टैक ओवरफ़्लो प्रश्न है: How to customize parameter names when binding spring mvc command objects - मुझे यह महसूस हो रहा है कि इस प्रश्न का समाधान आपको आपके समाधान के लिए एक अच्छा इनपुट दे सकता है।

या आप अपने एकल int एक कमांड वस्तु में और उपयोग इस वस्तु पर बाध्यकारी परिणाम लपेट (एक उदाहरण यहां पाया जा सकता: https://stackoverflow.com/a/13407434/280244)

+0

अच्छी तरह से करता है, तो यह तो मुझे लगता है कि बॉक्स से बाहर समर्थित नहीं है मैं एक मूल्य बीन के साथ रह सकता हूं, धन्यवाद –

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

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