2012-01-30 23 views
8

Burada bir sorun var, bunun hata olup olmadığından emin değilim. Proje, Spring Framework altında çalışıyor.Sorgu Dizesi, Spring Framework tarafından çözülür

görünüşüdür:

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

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

Kontrol mappend someUrl.htm I val1 olarak % geçmek istediğiniz 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> 

kullanılmıştır. Bunu yapmamın Fakat aşağıdaki kod parçası null döndürür:

request.getParameter("val1"); 

catalina.out gösterir:

UYARI: Parametreler: Karakter başarısız olduğunda kod çözme. '%' Değerine sahip 'val1' parametresi göz ardı edildi.

Spring sorgu dizesi ve request.getQueryString() döner val1=% ancak val1=%25 deşifre öğrenmek.

UrlDecoding nasıl engellenir?

Bu bir hata mı? Lütfen urlDecode parametresinin false olarak ayarlandığını unutmayın.

Sorunu geçici olarak çözmek için herhangi bir fikir, çünkü gerçekten %&= gibi chars kullanmanız gerekiyor.

+0

Hangi Yay sürümünü kullanıyorsunuz? – ustun

+0

Yay sürümü 2.0.5. – Sqeezer

+0

Karakterleri kodlayamaz mısınız? http://www.ietf.org/rfc/rfc2396.txt ifadesi,% kaç tanımlı diziyi başlatmak olarak tanımlar; buna uymamak muhtemelen size sorun çıkarır. –

cevap

1

Yapmanız gereken, Spring'in parametre haritasını kullanmamaktır. Sorgu dizesini ham biçiminde okuyacak, kendiniz deşifre edeceğiniz, ihtiyacınız olan değerleri alabileceğiniz ve gerektiğinde daha sonra okunabilecek bir fasülyeye ekleyecek bir filtre oluşturun. İkinci bölümün nasıl yapılacağı konusunda muğlakım çünkü ilkbahar 2.0.5 eski ve söylediğim her şey bu sürümde çalışmayabilir. Oturum kapsamındaki bir nesne iyi olmalıdır.

0

Aynı sorunu yaşıyorum. Ancak, request.getQueryString() dosyasında doğru kodlamayı bulabilirim.