ここで奇妙な問題が発生していますが、これがバグかどうかはわかりません。プロジェクトは 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 ショー:
警告: パラメータ: 文字のデコードに失敗しました。値 '%' を持つパラメーター 'val1' は無視されました。
request.getQueryString()
Spring はクエリ文字列をデコードして返すval1=%
が、返さないことがわかりましたval1=%25
。
ここで UrlDecoding を防ぐ方法は?
それはバグですか?urlDecode
パラメータが に設定されていることに注意してくださいfalse
。
のような文字を本当に使用する必要があるため、問題を回避するためのアイデア%&=
。