gpt4 book ai didi

java - 查询字符串由 Spring Framework 解码

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:55 25 4
gpt4 key购买 nike

我在这里遇到了一个奇怪的问题,但不确定这是否是错误。该项目在 Spring 框架下运行。

View :

<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 映射到 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: Character decoding failed. Parameter 'val1' with value '%' has been ignored.

我发现 Spring 解码查询字符串并且 request.getQueryString() 返回 val1=% 而不是 val1=%25

这里如何防止UrlDecoding?

这是一个错误吗?请注意 urlDecode 参数设置为 false

解决这个问题的任何想法,因为我真的需要使用像 %&= 这样的字符。

最佳答案

你要做的就是不使用Spring的parameter map。创建一个过滤器,它将以原始格式读取查询字符串,自己对其进行解码,获取所需的值并将它们添加到一个 bean 中,以便稍后在需要时读取。我对如何做后一部分含糊不清,因为 Spring 2.0.5 很旧,我告诉你的任何东西都可能在那个版本中不起作用。 session 范围内的对象应该没问题。

关于java - 查询字符串由 Spring Framework 解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9068445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com