Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查询字符串由Spring框架解码_Java_Forms_Servlets_Spring Mvc_Urldecode - Fatal编程技术网

Java 查询字符串由Spring框架解码

Java 查询字符串由Spring框架解码,java,forms,servlets,spring-mvc,urldecode,Java,Forms,Servlets,Spring Mvc,Urldecode,我这里有一个奇怪的问题,不确定这是否是错误。 该项目在Spring框架下运行 观点: <form method="GET" action="someUrl.htm" enctype="application/x-www-form-urlencoded" > <label>Label</label> <input name="val1" value="${val1}" /> ... <!-- submit b

我这里有一个奇怪的问题,不确定这是否是错误。 该项目在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>
我想将
%
作为
val1
传递。但在执行此操作时,以下代码返回null:

request.getParameter("val1");
catalina.out显示:

警告:参数:字符解码失败。已忽略值为“%”的参数“val1”

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

如何防止这种情况

那是虫子吗?请注意,
urlDecode
参数设置为
false


任何解决这个问题的方法,因为我真的需要使用像
%&=

这样的字符,您需要做的是不使用Spring的参数映射。创建一个过滤器,该过滤器将读取原始格式的查询字符串,自己解码,获取所需的值,并将它们添加到bean中,以便以后需要时读取。我对如何做后一部分含糊其辞,因为Spring2.0.5已经很旧了,我告诉您的任何内容都可能无法在该版本中工作。会话作用域中的对象应该没有问题。

我也遇到了同样的问题。但是,我可以在request.getQueryString()中找到正确的编码。

您使用的是哪个Spring版本?您不能对字符进行编码吗?将%定义为起始en转义序列,不遵守此定义可能会导致问题。rfc2396声明“%”必须转义为“%25”application/x-www-form-urlencoded'免费提供这项服务。这里的问题是Spring对查询字符串进行解码,然后,当我试图调用getParameter时,对查询参数进行第二次解码。所以,为了防止这种情况发生,我们应该告诉Spring不要解码查询字符串。为什么要从表单而不是帖子中获取信息?如果你认为这是一个bug,那么至少要升级到Spring 2.0.x的最新版本(即2.0.8)。但是你真的应该升级到更新的版本,2.0确实很旧了。
request.getParameter("val1");