[关闭]
@hengbao 2018-06-04T03:30:50.000000Z 字数 930 阅读 1761

@PathVariable出现点号时导致路径参数截断获取不全的解决办法

Java SpringMVC


原文链接

1、问题

SpringMVC项目中通过下面的URL进行GET请求。当version有多个小数点的时候。如version为1.0.1008。后台通过@PathVariable来获取version等于1.0。会丢失部分数据。

URL:

  1. http://host_ip/consumer/appVersion/phone/android/download/{version}

Controller:

  1. @RequestMapping(value="android/download/{version}",method=RequestMethod.GET)
  2. public void download(HttpSession session,HttpServletResponse response,@PathVariable("version")String version){
  3. }

2、解决方案

在version段后增加一个静态的字符段,这个段没有任何意义,可以为任意字符。

URL:

  1. http://host_ip/consumer/appVersion/phone/android/download/{version}/static_str

问题虽然解决了,但毕竟URL后多了个小尾巴,心情不愉悦。
再次谷哥。
参考:
http://stackoverflow.com/questions/3526523/spring-mvc-pathvariable-getting-truncated

URL不加小尾巴。在@RequestMapping的value中使用SpEL来表示,value中的{version}换成{version:.+}。

  1. @RequestMapping(value="android/download/{version:.+}",method=RequestMethod.GET)
  2. public void download(HttpSession session,HttpServletResponse response,@PathVariable("version")String version){
  3. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注