2012-01-30 21 views
8

द्वारा डीकोड किया गया है, मुझे यहां एक अजीब समस्या है, भले ही यह बग है या नहीं। परियोजना स्प्रिंग फ्रेमवर्क के तहत चल रही है।क्वेरी स्ट्रिंग को स्प्रिंग फ्रेमवर्क

दृश्य: someUrl.htm को

<form method="GET" action="someUrl.htm" enctype="application/x-www-form-urlencoded" > 

    <label>Label</label> 
    <input name="val1" value="${val1}" /> 
    ... 
     <!-- submit button here --> 
</form> 

नियंत्रक mappend SimpleUrlHandlerMapping

<bean id="parameterMethodNameResolver" 
     class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="methodParamNames"> 
      ... 
</bean> 

<bean id="handlerMapping" 
     class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
     <property name="urlDecode" value="false" /> 
     <property name="mappings"> 
      <props> 
       <prop key="**/someUrl.htm">someController</prop> 
      </props> 
     </property> 
</bean> 

का उपयोग कर रहा %val1 के रूप में पारित करने के लिए चाहते हैं। लेकिन जब मैं यह कर रहा हूँ, कोड का निम्न भाग अशक्त रिटर्न:

request.getParameter("val1"); 

catalina.out पता चलता है:

चेतावनी: पैरामीटर: चरित्र डिकोडिंग विफल रहा है। मूल्य '%' के साथ पैरामीटर 'val1' को अनदेखा कर दिया गया है।

मुझे लगता है कि वसंत क्वेरी स्ट्रिंग और request.getQueryString() रिटर्न val1=% नहीं बल्कि val1=%25 डीकोड पता लगाना।

UrlDecoding को यहां कैसे रोकें?

क्या यह एक बग है? कृपया ध्यान दें कि urlDecode पैरामीटर false पर सेट है।

इस मुद्दे को हल करने के लिए कोई भी विचार, क्योंकि मुझे वास्तव में %&= जैसे वर्णों का उपयोग करने की आवश्यकता है।

+0

आप किस वसंत संस्करण का उपयोग कर रहे हैं? – ustun

+0

वसंत संस्करण 2.0.5 है। – Sqeezer

+0

क्या आप पात्रों को एन्कोड नहीं कर सकते हैं? http://www.ietf.org/rfc/rfc2396.txt% escaped अनुक्रम प्रारंभ करने के रूप में% को परिभाषित करता है, इसका पालन न करने से शायद आपको समस्याएं आती हैं। –

उत्तर

1

आपको क्या करना है वसंत के पैरामीटर मानचित्र का उपयोग नहीं करना है। एक फ़िल्टर बनाएं जो क्वेरी स्ट्रिंग को अपने कच्चे प्रारूप में पढ़े, इसे स्वयं डीकोड करें, आपको आवश्यक मूल्य प्राप्त करें और उन्हें एक बीन में जोड़ें जिसे बाद में पढ़ा जा सके। मैं बाद के हिस्से को कैसे करना है इसके बारे में अस्पष्ट हूं क्योंकि वसंत 2.0.5 पुराना है और जो भी मैं आपको बताता हूं वह उस संस्करण में काम नहीं कर सकता है। सत्र स्कोप में एक ऑब्जेक्ट ठीक होना चाहिए।

0

मुझे एक ही समस्या मिल रही है। हालांकि, मैं अनुरोध में सही एन्कोडिंग पा सकता हूं .getQueryString()।

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