У меня здесь странная проблема, но я не уверен, что это ошибка.
Проект работает под Spring Framework.
Вид:
<form method="GET" action="someUrl.htm" enctype="application/x-www-form-urlencoded" >
<label>Label</label>
<input name="val1" value="${val1}" />
...
<!-- submit button here -->
</form>
Контроллер отображает на someUrl.htm
, используя 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' со значением '%' был проигнорирован.
Я обнаружил, что Spring декодирует строку запроса и request.getQueryString()
возвращает val1=%
, но не val1=%25
.
Как предотвратить UrlDecoding здесь?
Это ошибка? Обратите внимание, что для параметра urlDecode
установлено значение false
.
Любые идеи, чтобы обойти эту проблему, потому что мне действительно нужно использовать символы типа %&=
.