我在这里遇到一个奇怪的问题,但不确定这是否是错误。
该项目在Spring框架下运行。
风景:
<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
using 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>
我想通过%
as val1
。但是当我这样做时,以下代码返回 null:
request.getParameter("val1");
catalina.out 显示:
警告:参数:字符解码失败。值为“%”的参数“val1”已被忽略。
我发现 Spring 解码查询字符串并且request.getQueryString()
回报val1=%
但不是val1=%25
.
这里如何防止Url编码呢?
这是一个错误吗?请注意有urlDecode
参数设置为false
.
解决这个问题的任何想法,因为我真的需要使用像%&=
.
你所要做的就是不要使用Spring的参数映射。创建一个过滤器,以原始格式读取查询字符串,自行解码,获取所需的值并将它们添加到 Bean 中,以便稍后在需要时读取。我对如何执行后一部分不太清楚,因为 Spring 2.0.5 已经很旧了,我告诉你的任何内容可能在该版本中不起作用。会话范围内的对象应该没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)