Mam tutaj dziwny problem, ale nie jestem pewien, czy to błąd. Projekt działa pod Spring Framework.Ciąg zapytania jest dekodowany przez Spring Framework
Widok:
<form method="GET" action="someUrl.htm" enctype="application/x-www-form-urlencoded" >
<label>Label</label>
<input name="val1" value="${val1}" />
...
<!-- submit button here -->
</form>
Controller mappend do someUrl.htm
użyciu 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>
Chcę przekazać %
jak val1
. Ale kiedy to robię, następujący fragment kodu zwraca null:
request.getParameter("val1");
catalina.out pokazuje:
Ostrzeżenie: Parametry: Charakter dekodowanie nie powiodło się. Parametr "val1" o wartości "%" został zignorowany.
dowiem się, że wiosna dekoduje ciąg kwerendy i request.getQueryString()
powraca val1=%
lecz nie val1=%25
.
Jak zapobiec wprowadzeniu UrlDecoding tutaj?
Czy to błąd? Proszę zauważyć, że parametr urlDecode
jest ustawiony na false
.
Wszelkie pomysły na obejście problemu, ponieważ naprawdę potrzebuję używać znaków takich jak %&=
.
Którą wersję Spring używasz? – ustun
Wersja sprężynowa to 2.0.5. – Sqeezer
Nie można zakodować znaków? http://www.ietf.org/rfc/rfc2396.txt definiuje% jako sekwencję startową z sekwencją ucieczki, nieprzestrzeganie tego prawdopodobnie spowoduje problemy. –