2011-09-20 14 views
5

में त्रुटि फेंकता है मैं अनुरोध पैरामीटर प्राप्त करने के लिए @RequestParam एनोटेशन का उपयोग कर रहा हूं, और डीबी में मान डालने के लिए इसका उपयोग कर रहा हूं। मैंने उसी पृष्ठ पर पुनः निर्देशित करने के लिए नियंत्रक को सेटअप किया है जिसमें उपयोगकर्ता के मानों को दर्ज करने के लिए टेक्स्ट फ़ील्ड्स शामिल हैं, जिन्हें @RequestParam एनोटेशन का उपयोग करके पढ़ा जा रहा है।@RequestParam का उपयोग स्प्रिंग 3

लेकिन उसके बाद मैं पाठ खानों में मान दर्ज करें, और सबमिट करें क्लिक करें, यह इस त्रुटि

अनुरोध संसाधन विफल फेंकता है; नेस्टेड अपवाद java.lang.IleglegalArgumentException: तर्क प्रकार के लिए नाम [java.lang.String] उपलब्ध नहीं है, और पैरामीटर नाम जानकारी कक्षा फ़ाइल में नहीं मिली है।

मैं वसंत 3 के लिए नौसिखिया हूं, और त्रुटि को समझने में असमर्थ हूं। क्या कोई भी उस पर प्रकाश डाल सकता है।

अग्रिम धन्यवाद, विवेक

+0

स्प्रिंग एमवीसी का कौन सा संस्करण? क्या आप एनोटेशन के साथ विधि का हस्ताक्षर दिखा सकते हैं? – sinuhepop

+0

मैं स्प्रिंग एमवीसी संस्करण 3 का उपयोग कर रहा हूं, और विधि हस्ताक्षर 'सार्वजनिक शून्य डालने वाले रिकॉर्डर्स (@RequestParam स्ट्रिंग आईडी, @RequestParam स्ट्रिंग नाम, @RequestParam स्ट्रिंग एडीआर)' – Vivek

उत्तर

8

के लिए अपने हैंडलर विधि पैरामीटर में अनुरोध पैरामीटर का मान इंजेक्षन करने के लिए, या तो निम्न में से एक संतुष्ट

  1. अनुरोध पैरामीटर का नाम होना चाहिए विधि पैरामीटर के नाम से मेल खाना चाहिए। उदा। विधि पैरामीटर studentName

    public String goToStep(@RequestParam String studentName)

  2. अनुरोध पैरामीटर नाम में अनुरोध पैरामीटर "studentName" नाम इंजेक्षन जाएगा स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए अगर यह विधि पैरामीटर से मेल नहीं खाता के बाद। निम्नलिखित studentName में "nameOfStudent" अनुरोध पैरामीटर इंजेक्षन जाएगा:

    public String goToStep(@RequestParam("nameOfStudent") String studentName)

अपने हैंडलर विधि कोड पोस्ट कृपया अपनी समस्या जारी रहती है करने के लिए जारी है।

+0

मैंने दिशानिर्देशों का वर्णन किया, और तदनुसार सभी परम नाम सही हैं। कृपया हैंडलर विधि कोड के नीचे उल्लिखित पाएं। 'सार्वजनिक शून्य सम्मिलित रिकॉर्डर्स (@RequestParam स्ट्रिंग आईडी, @RequestParam स्ट्रिंग नाम, @RequestParam स्ट्रिंग एडीआर) ' और इसी जेएसपी में विधि पैरामीटर के नामकरण सम्मेलन के अनुसार प्रत्येक टेक्स्ट फ़ील्ड के लिए आईडी विशेषताएँ हैं। – Vivek

+0

जांचें कि अनुरोध पैरामीटर को सर्वलेट परत से एक्सेस किया जा सकता है या नहीं।इस तरह: 'code' सार्वजनिक शून्य insertRecords (@RequestParam स्ट्रिंग आईडी, @RequestParam स्ट्रिंग नाम, @RequestParam स्ट्रिंग addr, HttpServletRequest अनुरोध) { println (request.getParameter (" नाम ")); // उत्पादन में उपयोग न करें } 'कोड' यदि यह प्रिंट करता है तो" शून्य "तो जेएसपी पैरामीटर नहीं भेज रहा है और आपका प्रासंगिक जेएसपी कोड पोस्ट करना उपयोगी होगा। यदि यह उस मूल्य को प्रिंट करता है जिसे आप उम्मीद कर रहे हैं, तो हम जानते हैं कि समस्या नियंत्रक के साथ है। –

3

मैंने आपके द्वारा उपयोग किए जा रहे संस्करण के लिए कहा क्योंकि मैं कुछ दिनों पहले इसी तरह की समस्या से भाग गया था। मैं स्प्रिंग 3.1.0.एम 2 का उपयोग कर रहा था और एक ही अपवाद तब दिखाई दिया जब मैं प्रॉक्सी @ कंट्रोलर में @PathVariable का उपयोग कर रहा था।

यह resolved known bug के कारण हुआ था। आपको बस 3.0.6 पर स्विच करना होगा या रात के निर्माण 3.1.0.बिल-स्नैपशॉट का प्रयास करना होगा। बेशक, बाद के विकल्प उत्पादन पर्यावरण के लिए अनुशंसित नहीं है।

+0

wwwoooowwwww .... मैं इस पर जांच करूंगा और स्पेस बाक अपडेट करूँगा .. जानकारी के लिए धन्यवाद ... :) – Vivek

+0

बहुत बहुत धन्यवाद! मैं इस अस्पष्ट बग के लिए पूरी खोज कर रहा था और यदि आपकी पोस्ट नहीं है तो मैं इसे हल करने की कोशिश कर कई घंटे बिताऊंगा :) – Leonti

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