猿问

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

我有一个在Tomcat上运行的Spring-Boot应用程序。在其中,我有一个带有请求参数的RestController 。不读取或作为查询参数传递。例如,如果我给出,那么控制器方法不会作为值@RequestParam'&''#'

http://localhost:8080/v1/test?query=&&


@RequestMapping(value = "/v1/test", method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)

     public String getV2LocationByName(

                                      @RequestParam

                                      String cityName cityName,

                                      @RequestParam(value = LANGUAGE, defaultValue = US_ENGLISH_LOCALE) String language,

                                      HttpServletRequest request) throws InterruptedException, ExecutionException {

--------------

---------------

 System.out.println(cityName);

}

上面的程序为 & 和 # 返回空输出


为什么 spring 限制这些特殊字符,但不限制任何其他特殊字符?并且如果使用查询参数作为'Andaman&Nicobar',查询参数被读作'Andaman'



收到一只叮咚
浏览 130回答 2
2回答

FFIVE

您需要在前端对特殊字符进行编码。IE'$' is '%26'只是另一方面,将名称显式添加到您的@RequestParam("cityName")

守着一只汪

与号 (&) 用于分隔多个请求参数,而井号 (#) 用于 HTML 中的书签/锚点。它们都是具有用途的特殊字符,如果它们不用于这些目的,则需要对其进行编码。您可以在此处找到有关该主题的更多信息。
随时随地看视频慕课网APP

相关分类

Java
我要回答