问题描述
- 在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
以上