Springboot:控制器中的@RequestParam读取带有'&'和'#'为空的请求

时间:2019-04-16 10:46:58

标签: java spring spring-boot spring-mvc urlencode

我有一个在 Tomcat 上运行的 Spring-Boot 应用程序。在其中,我有一个带有请求参数的 RestController @RequestParam不会读取作为查询参数传递的'&''#'。例如,如果我输入http://localhost:8080/v1/test?query=&,则控制器方法不会使用{{ 1}}作为值

&

上面的程序为&和#

返回空输出

为什么spring限制了这些特殊字符,却没有限制其他特殊字符? 另外,如果将查询参数用作“ Andaman&Nicobar”,则查询参数将被读取为“ Andaman”

2 个答案:

答案 0 :(得分:4)

您需要在前端对特殊字符进行编码。

files = { 'Input.txt': 'Randy', 'Code.py': 'Stan', 'Output.txt': 'Randy' } dictresult= {} for k, v in files.items(): if v not in dictresult: dictresult[v] = [k] else: dictresult[v].append(k) print(dictresult) # -> {'Randy': ['Output.txt', 'Input.txt'], 'Stan': ['Code.py']}

在一方面,最好在您的'$' is '%26'

中显式添加名称

答案 1 :(得分:1)

“&”号(&)用于分隔多个请求参数, 而井号(#)用于HTML中的书签/锚。

它们都是带有用法的特殊字符,如果不打算将它们用于这些目的,则需要对其进行编码。

您可以找到有关主题here的更多信息。