Строка запроса декодируется Spring Framework

У меня странная проблема, не уверен, что это ошибка. Проект работает под 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. Но когда я это делаю, следующий кусок кода возвращает null:

request.getParameter("val1");

catalina.out показывает:

WARNING: Parameters: Сбой декодирования символов. Параметр 'val1' со значением '%' был проигнорирован.

Я обнаружил, что Spring декодирует строку запроса и request.getQueryString() возвращает val1=%, но не val1=%25.

Как предотвратить здесь UrlDecoding?

Это ошибка? Обратите внимание, что параметр urlDecode имеет значение false.

Есть идеи, как обойти эту проблему, потому что мне очень нужно использовать символы типа %&=.

9
задан skaffman 31 January 2012 в 00:11
поделиться