अगर मैं आ अनुरोध मानचित्रण निम्न के समान है:क्या खाली हो सकता है RequestParam मान डिफ़ॉल्ट वैल्यू का उपयोग करते हैं?
http://example.com/test?i=
मैं त्रुटि संदेश
का मूल्य परिवर्तित करने में विफल मिलती है:
@RequestMapping(value = "/test", method = RequestMethod.POST) @ResponseBody public void test(@RequestParam(value = "i", defaultValue = "10") int i) { }
और फिर इस अनुरोध के साथ फोन 'int' टाइप करने के लिए 'java.lang.String' टाइप करें; इनपुट स्ट्रिंग के लिए:: नेस्टेड अपवाद java.lang.NumberFormatException है "" '
मैं, या स्ट्रिंग मूल्यों को स्वीकार करने और केवल पार्स करने से या तो खाली मापदंडों भेजने से जावास्क्रिप्ट ग्राहक को रोक कर इस हल कर सकते हैं अगर वे नहीं पाए जाते हैं खाली होना
अद्यतन: वसंत के बाद के संस्करण अब मूल रूप से वांछित व्यवहार को लागू करते हैं।
मैंने वसंत 4.3.5 में इसका परीक्षण किया है और पाया है कि व्यवहार वास्तव में NumberFormatException
को उठाए बिना डिफ़ॉल्ट मान को शून्य मान को बदल देगा; मेरा मूल मैपिंग अब ठीक काम करता है।
मुझे यकीन नहीं है कि वसंत का कौन सा संस्करण इस व्यवहार में बदलाव किया गया था।
निश्चित रूप से पैरामीटर उस अपवाद को बढ़ाने के लिए एक इंटीजर प्रकार होगा? – laher
मैं वसंत विशेषज्ञ नहीं हूं, लेकिन जब आप इसे सेट नहीं करते हैं तो डिफ़ॉल्ट मान का उपयोग किया जाता है? यानी यदि आपका अनुरोध http://example.com/test होगा? जैसा कि आप http://example.com/test?i= का उपयोग करते हैं, तो मैं मौजूद हूं और "" पर सेट किया गया है, इसलिए डिफ़ॉल्ट मान का उपयोग नहीं किया जाता है – user902383
धन्यवाद amir75, गलती से 'स्ट्रिंग' प्रकार की आपूर्ति की गई। user902383, यह सही है, हालांकि एक पूर्णांक मान के लिए मैं पसंद करूंगा कि एक शून्य/खाली मान इसके बजाय डिफ़ॉल्ट वैल्यू का उपयोग करेगा। –