2011-12-18 8 views
18

मैं अपने HttpServletRequest के पैरामीटर मानचित्र में एक नया पैरामीटर जोड़ना चाहता हूं।मेरे जावा सर्वलेट के मौजूदा HttpServletRequest में पैरामीटर कैसे जोड़ें?

निम्नलिखित कोड

request().getParameterMap().put("j_username", user); 
request().getParameterMap().put("j_password", pwd); 

इस त्रुटि

no modifications are allowed to a locked parameter map 

ऐसा करने का सही तरीका क्या है बनाता है?

+1

इस लिंक की जांच करें आपका जवाब है: http://stackoverflow.com/questions/1413129/modify-request-parameter-with-servlet-filter – olyanren

+0

उम्मीद है कि इस लिंक कुछ जानकारी की है आप के लिए: [उदाहरण डिपो] (http://www.exampledepot.com/egs/javax.servlet.jsp/caller.jsp.html) सम्मान –

उत्तर

13

अनुरोध के पैरामीटर ब्राउज़र द्वारा पैरामीटर के रूप में भेजे गए मान हैं। उन्हें बदलने का कोई कारण नहीं है। यदि आप अनुरोध पर कुछ मान जोड़ना चाहते हैं, तो पैरामीटर के बजाय एक विशेषता का उपयोग करें।

request.setAttribute("user", new User(userName, password)); 

आप यदि आप किसी अन्य संसाधन के लिए अनुरोध अग्रेषित (हालांकि मैं इसे एक अच्छा अभ्यास है नहीं कहेंगे) पैरामीटर जोड़ सकते हैं: इस अतिरिक्त लाभ यह है कि एक विशेषता किसी भी वस्तु और न सिर्फ एक स्ट्रिंग हो सकती है:

request.getRequestDispatcher("/some/path?j_username=" + user + "&j_password=" + pwd).forward(request, response); 

पैरामीटर सही ढंग से एन्कोड किया जाना चाहिए, हालांकि।

+1

असल में मैं पैरामीटर को अनुरोध में विशेषता नहीं जोड़ना चाहता हूं। कारण है कि मैं अपनी जरूरतों के अनुरूप कुछ ओपन सोर्स एप्लिकेशन (xwiki) के विस्तार पर काम कर रहा हूं, जो अनुरोध में पैरामीटर की अपेक्षा करता है और जिस तरह से यह प्राप्त हो रहा है अनुरोध है .getParameter ("paramName"); मूल अनुरोध किसी अन्य वेबप्लिकेशंस से आ रहा है जिसे मैं स्वयं सेट नहीं कर सकता क्योंकि इसमें उनके बारे में ज्ञान नहीं है –

+0

फिर मुकायुफा द्वारा प्रदान किया गया लिंक शायद आप जो खोज रहे हैं। मुझे नहीं लगता कि आप इस तरह प्रमाणित करने में सक्षम होंगे, यद्यपि। –

+2

यहां पर एक अच्छा लेख है: http://ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/ – Lincoln

8

मैं एक समान समस्या में भाग गया और पैरामीटर मानचित्र की एक प्रति बनाकर इसके आसपास हो गया।

Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap()); 
संबंधित मुद्दे