@PathVariable接收参数带点号“.“问题

问题描述

  • 在spring boot项目中,当我们使用@PathVariable进行参数接收时,如果传入的参数中带有".","."后的数据会丢失。

问题重现

  • 1.请求代码
@RestController
public class MyController {
    
    

    @GetMapping(value = "/test/{data}")
    public Object test(@PathVariable("data") String data) {
    
    
        Map<String, Object> map = new HashMap<>();
        map.put("data", "接收到的参数为:" + data);
        return map;
    }
}
  • 2.请求url
    http://localhost:8080/test/aaa.bbb.ccc

  • 3.请求返回

{
    
    
    "data": "接收到的参数为:aaa.bbb"
}
  • 可以看到参数为 aaa.bbb.ccc,但实际接收到的为 aaa.bbb

解决方案

方法一

  • 修改Controller里的url,@PathVariable参数不是最后一段,例如修改为@GetMapping(value = "/test/{data}/end")

方法二

  • 使用SPEL表达示,修改为@GetMapping(value = "/test/{data:.+}")

方法三

  • 升级spring boot版本为2.0.0以上

猜你喜欢

转载自blog.csdn.net/vbhfdghff/article/details/114385743
今日推荐